当使用#if检查多个编译器swich定义时,MISRA警告12.6

时间:2016-10-15 09:13:50

标签: c c-preprocessor conditional-compilation misra

如果有超过1个项目/变体的代码,则使用预处理器开关(编译器开关)来启用或禁用代码。例如,如果MACRO1,MACRO2和MACRO3是项目中的预处理器指令或编译器开关,则

#if (defined MACRO1 || defined MACRO2)
/* Do something */
#elif (defined MACRO2 && defined MACRO3) 
/* Do something */
#else
/* Do something */
#endif

此条件#if语句产生MISRA警告12.6 as "运算符所需的布尔表达式:'!&#39 ;; -strong(B,...)选项可以帮助提供逐行执行"

有人可以告诉我是否有其他方式来撰写此条件声明或如何证明其合理性?

0 个答案:

没有答案