VS2015 预处理器定义与点



我正在处理一个vs项目,在Project ->属性页面的c/c ++ ->预处理器下,我有一个预处理器,绝对是"$(用户名(TEST;"。我的用户名是"bob.p"。

构建时,我收到一个智能感知错误,说"命令行错误:无效的宏定义:bob.pTEST"。删除预处理器定义或硬编码"bobpTest"而不带点可以解决此问题。有没有办法在不删除预处理器定义的情况下解决此问题?即将其标记为文字?尝试使用单引号和双引号,但都不起作用。

编辑:

问题是我的Windows用户名是"bob.p",而我正在处理的Visual Studios项目具有"$(USERNAME(TEST"作为预处理器定义。我的用户名中有一个点会导致错误。有没有办法在本地更改 $(USERNAME( 的值以删除点,或向定义添加转义序列以转义点?

预处理器符号的名称中不能有点(请记住这与#define相同(,但是您可以执行以下操作:USERNAME=$(USERNAME)TEST;

在源代码中使用这样的符号(作为字符串(会因为预处理器的处理方式而变得更加棘手,要将值用作字符串,您需要使用预处理器字符串化运算符 (#(:

#define STR_(x) #x
#define STR(x) STR_(x)
printf("My preprocesor symbol: %srn", STR(USERNAME));

相关内容

  • 没有找到相关文章

最新更新