我有一组用于跟踪代码的语句。
为了提高性能,有没有办法在编译之前摆脱这些语句?
在这种情况下,预编译头的概念是否会成功?
提前致谢
Rupesh
答案 0 :(得分:2)
通常以类似于此的方式执行跟踪(此处过于简化):
#ifdef DISPLAY_TRACES
#define TRACE(x) printf(x)
#else
#define TRACE(x)
#endif
然后使用或不使用-DDISPLAY_TRACES
进行编译,具体取决于您是否需要跟踪。
答案 1 :(得分:2)
您可以将跟踪放在预处理器宏中,并使用预处理器条件选择应使用的宏:
#ifdef TRACING_ENABLED
# define TRACE(x) printf("TRACE: %s:%d %s\n", __FILE__, __LINE__, x)
#else
# define TRACE(x)
#endif
void foo()
{
TRACE("In foo()");
}
如果定义了TRACING_ENABLED
,则TRACE
宏将替换为printf
语句。如果TRACING_EMABLED
未定义 ,则TRACE
将替换为空行。
答案 2 :(得分:1)
使用预处理程序指令删除跟踪语句:
#ifdef TRACING_IS_ENABLED
/* Perform tracing operations. */
#endif
确保跟踪声明没有意外的副作用。
如果要重新启用跟踪操作,请定义宏TRACING_IS_ENABLED
。