问题:
在 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中文网其他相关文章!