首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >带点的VS2015预处理器定义

带点的VS2015预处理器定义
EN

Stack Overflow用户
提问于 2018-10-15 05:00:09
回答 1查看 237关注 0票数 -1

我正在处理一个vs项目,在项目测试属性页面的c/c++ ->预处理器下,我有一个预处理器deff“$( -> )->;”。我的用户名是"bob.p“。

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

编辑:

问题是我的windows用户名是"bob.p",而我正在处理的visual studios项目的预处理器定义是"$( username )TEST“。我的用户名中有一个点,这会导致错误。有没有一种方法可以在本地更改$(用户名)的值来删除点,或者在定义中添加转义序列来转义点?

EN

回答 1

Stack Overflow用户

发布于 2018-10-15 05:35:28

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

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

代码语言:javascript
复制
#define STR_(x) #x
#define STR(x) STR_(x)

printf("My preprocesor symbol: %s\r\n", STR(USERNAME));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52807054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档