当前位置:  开发笔记 > 编程语言 > 正文

可以为#define分配已定义的结果吗?

如何解决《可以为#define分配已定义的结果吗?》经验,为你挑选了1个好方法。



1> Meninx - メネン..:

defined在条件指令中使用扩展被视为未定义行为.

从C99标准:6.10.1/4 | C++ 11标准最后工作草案(n4296)16.1/4

如果defined由于此替换过程而生成令牌,或者defined在宏替换之前使用一元运算符与两个指定表单中的一个不匹配,则行为是未定义的.

从C99标准:6.10.8/4 | C++ 11标准最后工作草案(n4296)16.8/4

无这些宏名称,也不标识符defined,应的对象#define#undef预处理指令.

GNU - CPP 4.2.3

如果defined运算符是宏扩展的结果,则C标准表示行为未定义.GNU cpp将其视为真正定义的运算符并对其进行正常评估.如果您使用命令行选项'-pedantic',它将在您的代码使用此功能的任何地方发出警告,因为其他编译器可能会以不同方式处理它.

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有