我有以下宏:C预处理与if语句
#define IF_TRACE_ENABLED(level) if (IsTraceEnabled(level))
用户代码应该如下:
IF_TRACE_ENABLED(LEVEL1)
{
... some very smart code
}
这里花括号强调 - 我要防止“如果”从宏 “吃” 其他代码:
if (...)
IF_TRACE_ENABLED(LEVEL1)
printf(....);
else
bla bla bla
在这个例子中IF_TRACE_ENABLED
“吃” else块。
有没有办法强制用户代码不编译没有卷闸或有其他来定义宏来实现安全?
我没有看到这个宏给你的裸if语句。 – JeremyP 2010-09-28 10:29:03
忘掉这个例子。你可能会遇到一个复杂的情况,那就是你不想每次都重复一遍。 – 2010-09-28 11:08:37
@JeremyP:在这个简单的例子中,没有太多实用的宏,但是正如Nathan指出的那样,在调试宏中可能会有更多的复杂性和/或基于构建配置的宏有多种变化例如,总是评估为“false”的版本版本,以便跟踪字符串从可执行文件中除去)。 – 2010-09-28 14:37:09