MSYS2シェルでmingwでコンパイルしたCプログラムをテストするときに問題が発生しました。ウィンドウコンベンション(/
で始まる)に従ってオプションを受け入れるコマンドラインパーサを作成しました。私は、出力ファイルを生成するには、このように私のプログラムを呼び出す場合:argv[1]
で終わる何MSYS2:ドライブ名へのパス名の自動変換を無効にするにはどうすればよいですか?
./example.exe /o test
は実際に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
を起動するのはちょっと面倒です。
はあなたがエスケープまたはティックで囲んてみました/ '" ' – Olaf
@Olaf MSYS2は、開発環境では* Cと親指のルールがある*用* 1です*言語タグはほぼ常に適切です!Cコードをビルドするための 'clang'や' Makefile'のコマンドライン引数に関する質問と同じことです。もちろん、*明白なことを試しました! –
@Olafとマイグレーションの投票も間違っています。特に、「プログラマーがよく使用するソフトウェアツール*」 –