C 中的预处理器定义和关键字重定义
在 C 预处理器指令领域,关于重定义的标准合规性引发了激烈的争论使用#define 的关键字。合规的预处理器可以允许这种做法吗?
预处理器和关键字
根据 C 标准,§17.4.3.1.1/2 明确禁止在其中重新定义关键字包含标准库头的翻译单元。此限制确保了标准库组件的完整性。
C 0x 和关键字重新定义
最初,人们认为 C 0x(现已过时的 C 11 中间体) )将加强这一禁令,彻底禁止关键字重新定义(§17.6.3.3.1)。然而,后来澄清,C 0x 中的规则保持不变。感知到的修订源于无意中误导了一些人的文本重新排列。
标准合规性和关键字重新定义
鉴于当前标准,重新定义关键字的 C 程序不能认为符合标准。通过违反关键字重新定义的限制,此类程序破坏了语言及其内置语义的完整性。
以上是使用 #define 标准重新定义 C 关键字是否符合标准?的详细内容。更多信息请关注PHP中文网其他相关文章!