摆脱编译一些语句

时间:2011-12-09 09:30:38

标签: c

我有一组用于跟踪代码的语句。

为了提高性能,有没有办法在编译之前摆脱这些语句?

在这种情况下,预编译头的概念是否会成功?

提前致谢
Rupesh

3 个答案:

答案 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