-DME=AWESOME
还有这个:
#if ME==AWESOME#error Im awesome!#endif
得出这个:
Registers.cpp:59:2: error: #error Im awesome!
但是这个:
#if ME==NOTSOGREAT#error Im confused!#endif
得出这个:
解决方法 请注意,执行-DME = AWESOME等同于源文件,其开头为:Registers.cpp:59:2: error: #error Im confused!
#define ME AWESOME
现在让我们来看看#if ME == AWESOME.令牌替换将ME更改为AWESOME,因此该行的最终版本为:
#if AWESOME==AWESOME
当你在预处理器中使用==时,一个不是#defined的字母标记被替换为0.所以这个测试#if 0 == 0这是真的,所以显示你的错误.
现在,看看:
#if ME==NOTSOGREAT
令牌替换后,它是:
#if AWESOME==NOTSOGREAT
这又相当于#if 0 == 0,这是真的.
如果在此之前你也有#define AWESOME 5,那么你会发现第一个测试是真的,但第二个测试是假的.
我猜你是在试图检测我是否被定义为AWESOME但是没有办法做到这一点;你只能测试ME是否被定义为与AWESOME被定义为相同的东西.
总结以上是内存溢出为你收集整理的c – 相等的预处理程序测试始终计算为true全部内容,希望文章能够帮你解决c – 相等的预处理程序测试始终计算为true所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)