#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“吃掉”其他块.
有没有办法强制用户代码不编译没有卷曲刹车或有其他定义宏来实现安全?
#define IF_TRACE_ENABLED(level) if (!IsTraceEnabled(level)) {} else
旁注:问题的第二个例子中printf()周围的大括号不会解决问题 – 与bla bla bla相关联的else仍将绑定到宏中的if语句.