我正在处理一个vs项目,在项目测试属性页面的c/c++ ->预处理器下,我有一个预处理器deff“$( -> )->;”。我的用户名是"bob.p“。
在构建时,我收到一个intellisense错误,说“命令行错误:无效的宏定义: bob.pTEST”。删除预处理器定义或不带点的硬编码"bobpTest“可解决此问题。有没有办法在不删除预处理器定义的情况下修复这个问题?例如,将其标记为文字?尝试使用单引号和双引号,但都不起作用。
编辑:
问题是我的windows用户名是"bob.p",而我正在处理的visual studios项目的预处理器定义是"$( username )TEST“。我的用户名中有一个点,这会导致错误。有没有一种方法可以在本地更改$(用户名)的值来删除点,或者在定义中添加转义序列来转义点?
发布于 2018-10-15 05:35:28
预处理器符号的名称中不能有点(请记住,这与#define
相同),但是您可以这样做:USERNAME=$(USERNAME)TEST;
在源代码中使用这样的符号(作为字符串)会因为处理预处理器的方式而变得有点棘手,要将值用作字符串,您需要使用预处理器串化运算符(#):
#define STR_(x) #x
#define STR(x) STR_(x)
printf("My preprocesor symbol: %s\r\n", STR(USERNAME));
https://stackoverflow.com/questions/52807054
复制相似问题