MSYS2:如何禁用路径名到驱动器号的自动转换?
在MSYS2 shell中测试用mingw编译的C程序时,我遇到了一个问题:我编写了一个命令行解析器,它根据windows约定接受选项(以/
开头)。 如果我这样调用我的程序来生成输出文件:
./example.exe /o test
最终在argv[1]
中的结果实际上是O:/
。 从运行CMD.EXE
的控制台窗口进行测试时,它可以正常工作。 这个真正最小的程序演示了这种行为
#include int main(int argc, char **argv) { if (argc > 1) { puts(argv[1]); } return 0; }
$ ./example.exe /o O:/
所以我想这是MSYS2 shell试图提供帮助,并将类似于root下面的单字母路径的内容替换为驱动器字母语法。 有没有办法禁用此行为? 总是启动CMD.EXE
进行测试有点麻烦。
您可以使用MSYS2_ARG_CONV_EXCL
环境变量来禁用此行为。 例如,尝试运行:
MSYS2_ARG_CONV_EXCL=\* ./example.exe /o test