當我在MSYS2 shell中測試用mingw編譯的C程序時,我遇到了一個問題:我編寫了一個命令行解析器,它接受根據Windows約定(從/
開始)的選項。如果我把我的計劃是這樣產生一個輸出文件:MSYS2:如何禁用路徑名自動轉換爲驅動器號?
./example.exe /o test
什麼argv[1]
最終實際上是O:/
。從運行CMD.EXE
的控制檯窗口進行測試時,它工作正常。這確實最小的程序演示行爲:
#include <stdio.h>
int main(int argc, char **argv)
{
if (argc > 1)
{
puts(argv[1]);
}
return 0;
}
$ ./example.exe /o
O:/
所以我想這是MSYS2殼嘗試是有益的和更換的東西,看起來像下面根一個字母的路徑爲驅動器盤符語法。有沒有辦法禁用這種行爲?總是啓動CMD.EXE
進行測試有點麻煩。
沒有關係C.你嘗試逃跑或蜱封閉/'「' – Olaf
@Olaf MSYS2是一個開發環境爲* * C和經驗法則是一個* *語言標記幾乎總是合適的!與關於'clang'或'Makefile'命令行參數的問題一樣,用於構建一些C代碼......當然,我嘗試了*明顯*這樣的事情! –
@Olaf和遷移投票也是錯誤的,請參閱[我可以在此處詢問哪些主題](https://stackoverflow.com/help/on-topic),特別是「程序員常用的軟件工具」 –