gpt4 book ai didi

c - 为什么 MISRA 规则禁止使用 '#undef' ?

转载 作者:太空狗 更新时间:2023-10-29 17:06:22 25 4
gpt4 key购买 nike

为什么 MISRA 规则禁止在程序中使用 #undef?如果我想限制任何宏的范围,如何在不使用 #undef 的情况下做到这一点?

最佳答案

基本上,因为 MISRA 太过偏执,不相信程序员知道他们在做什么 :-) 说真的,MISRA 试图防止某些错误,并且相信如果你禁止可能有问题的代码结构,可靠性软件突然增加。这是否属实是一个有争议的问题。在 #undef 的情况下,可能的原因是一旦定义了一个宏,它的扩展就会保持不变,并且始终是它的定义。如果您允许 #undef,则标识符可以重用为变量、函数名、typedef 或结构/union 成员,甚至可以重用为带有 a, gasp, different 的宏扩张。如果您愿意,这是一种防止标识符隐藏的方法。很可怕,不是吗?!你来决定!

要回答你的第二个问题,如果不能使用 #undef 限制宏范围的唯一方法是使用文件结尾,这是唯一的其他标准定义结束宏作用域的方法。换句话说,您必须将源文件拆分成更小的文件,并且仅在需要编译特定文件时才定义宏。

关于c - 为什么 MISRA 规则禁止使用 '#undef' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11665031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com