【发布时间】:2019-08-27 09:18:33
【问题描述】:
我正在定义一些宏 - #define 临时内部代码,使用后我有 #undef。
不可以#undefMACRO吗?
void c_cmd(unsinged char *com)
{
int abc = com[0];
int res = 0;
switch(abc)
{
case 1:
#define ssCmd com[2] /* SRT or STP*/
res = abc + ssCmd;
/* part of some functionality */
#undef ssCmd
break;
default:
break;
}
}
观察到的警告:
不鼓励使用“#undef”:“ssCmd”[MISRA 2012 规则 20.5, 咨询]
【问题讨论】:
-
简单阅读规则 20.5,不言自明。
-
@P.W Nah 该帖子已过时,因为 MISRA-C:2012 尚未发布。关于
#undef的规定在2012年放宽了。 -
使用 int ssCmd = com[2];而是将整个内容包含在 {} 中以限制变量的范围。