MSYS2:如何禁用路径名自动转换为驱动器号?
当我在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
进行测试有点麻烦。
您可以使用MSYS2_ARG_CONV_EXCL
环境变量来禁用此行为。例如,尝试运行:
MSYS2_ARG_CONV_EXCL=\* ./example.exe /o test
太好了,解决了这个问题,谢谢。你有资源解释这个环境变量的内容吗? –
目前我找不到它,但它基本上是由一些分隔符分隔的参数前缀列表。 –
好的,我会自己搜索它,同时只记得名字:) –
没有关系C.你尝试逃跑或蜱封闭/'“' – Olaf
@Olaf MSYS2是一个开发环境为* * C和经验法则是一个* *语言标记几乎总是合适的!与关于'clang'或'Makefile'命令行参数的问题一样,用于构建一些C代码......当然,我尝试了*明显*这样的事情! –
@Olaf和迁移投票也是错误的,请参阅[我可以在此处询问哪些主题](https://*.com/help/on-topic),特别是“程序员常用的软件工具” –