首页 >后端开发 >C++ >预处理器 #if 条件中未定义的常量:已定义或未定义的结果?

预处理器 #if 条件中未定义的常量:已定义或未定义的结果?

Linda Hamilton
Linda Hamilton原创
2024-11-10 13:25:02473浏览

Undefined Constants in Preprocessor #if Conditions: Defined or Undefined Results?

预处理器#if条件中未定义的常量:已定义或未定义的结果?

问题:

在 C/C 中,在预处理器 #if 条件中使用时,未定义常量的假定值是多少?这个假设是否可靠,或者未定义的常量会产生不可预测的行为吗?

答案:

根据 C99 标准,未定义的常量确实被假定为具有值0 用于评估 #if 条件。这在 §6.10.1 ¶3:

中明确说明:“在执行了由于宏扩展和定义的一元运算符而进行的所有替换后,所有剩余的标识符都将替换为 pp-number 0。”

同样,C 标准 (§16.1 ¶4) 规定:

“由于宏扩展和定义的一元运算符执行所有替换后,所有剩余的标识符和关键字,除了 true 和false,被替换为 pp-number 0。”

因此,您可以可靠地假设未定义的常量在预处理器 #if 条件中将被视为 0。

以上是预处理器 #if 条件中未定义的常量:已定义或未定义的结果?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn