前端之家收集整理的这篇文章主要介绍了
宏 – 使用if语句的C预处理程序,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下宏:
#define IF_TRACE_ENABLED(level) if (IsTraceEnabled(level))
用户代码应如下所示:
IF_TRACE_ENABLED(LEVEL1)
{
... some very smart code
}
这里强调大括号 – 我想阻止“if”从宏到“吃掉”其他代码:
if (...)
IF_TRACE_ENABLED(LEVEL1)
printf(....);
else
bla bla bla
在这个例子中,IF_TRACE_ENABLED“吃掉”其他块.
有没有办法强制用户代码不编译没有卷曲刹车或有其他定义宏来实现安全?
这不会强制宏的
用户使用大括号,但它会阻止else子句被无意中吃掉:
#define IF_TRACE_ENABLED(level) if (!IsTraceEnabled(level)) {} else
旁注:问题的第二个例子中printf()周围的大括号不会解决问题 – 与bla bla bla相关联的else仍将绑定到宏中的if语句.
原文链接:https://www.f2er.com/c/115627.html