围绕在 C 预处理器中使用 #define 重新定义关键字的争论引发了有关标准一致性的问题。本文深入探讨了这个问题,以便清楚地了解这种做法的允许性和后果。
符合标准的预处理器可以允许关键字重新定义吗?
是,符合标准的 C 预处理器允许使用 #define 重新定义语言关键字。但是,标准并未强制要求。
符合标准的预处理器必须允许关键字重新定义吗?
不,标准不要求符合标准的预处理器允许关键词重新定义。但是,该标准确实限制使用重新定义在包含的标准标头中声明或定义的名称的宏。
重新定义关键字的后果
虽然预处理器可能允许关键字重新定义,它不会使生成的程序符合标准。由于与原始关键字语法和语义冲突,重新定义关键字可能会导致编译错误或意外行为。
具体指南
在 C 0x 中,有一项提议彻底禁止关键字重新定义,但这尚未实施。相关标准文本仅警告不要为包含标准标题的翻译单元中的关键字在词汇上相同的名称定义宏。
结论
虽然可以使用#define 重新定义 C 预处理器中的关键字,这样做的代价是结果程序不符合标准。避免重新定义关键字以确保 C 代码的兼容性和可靠性至关重要。
以上是C 预处理器可以重新定义关键字吗?会有什么后果?的详细内容。更多信息请关注PHP中文网其他相关文章!