一个常见的假设是预处理器在 #if 条件中使用时将未定义常量解释为 0 。但这是否可以持续依赖,或者会产生不可预测的结果?
答案在于 C99 和 C 17 标准。
C99 标准
C99 标准在 §6.10.1 ¶3 中规定:
“在执行了由于宏扩展和定义的一元运算符而进行的所有替换后,所有剩余的标识符都将替换为 pp-number 0。 “
C 17 标准
同样,C 17 标准在 §16.1 ¶4 中声明:
“由于宏扩展和已经执行了定义的一元运算符,所有剩余的标识符和关键字,除了 true 和 false 之外,都被替换为 pp-number 0。"
结论
因此,在 C 和 C 中,假设未定义常量在 #if 条件下计算为 0 确实是可靠的。此行为在语言标准中明确定义,确保跨不同编译器和平台的一致执行。
以上是C 和 C `#if` 宏中未定义常量的计算结果是否为 0?的详细内容。更多信息请关注PHP中文网其他相关文章!