首页 > 后端开发 > C++ > C 和 C `#if` 宏中未定义常量的计算结果是否为 0?

C 和 C `#if` 宏中未定义常量的计算结果是否为 0?

Susan Sarandon
发布: 2024-11-10 16:29:02
原创
728 人浏览过

Are Undefined Constants Evaluated as 0 in C and C   `#if` Macros?

在 C 和 C #if 宏中未定义常量的计算结果是否为 0?

一个常见的假设是预处理器在 #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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板