c – 相等的预处理程序测试始终计算为true

c – 相等的预处理程序测试始终计算为true,第1张

概述使用这个: -DME=AWESOME 还有这个: #if ME==AWESOME#error Im awesome!#endif 得出这个: Registers.cpp:59:2: error: #error Im awesome! 但是这个: #if ME==NOTSOGREAT#error Im confused!#endif 得出这个: Registers.cpp:59:2: 使用这个:

-DME=AWESOME

还有这个:

#if ME==AWESOME#error Im awesome!#endif

得出这个:

Registers.cpp:59:2: error: #error Im awesome!

但是这个:

#if ME==NOTSOGREAT#error Im confused!#endif

得出这个:

Registers.cpp:59:2: error: #error Im confused!

解决方法 请注意,执行-DME = AWESOME等同于源文件,其开头为:

#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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1216333.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存