似乎for- printfstyle调试的人总是使用预处理器宏.与此类似的解决方案有什么问题吗?
void debug(char *msg) {
#ifdef DEBUG
printf("%s", msg);
#endif
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*pan 10
通常这样他们可以这样做:
#define DEBUG(MSG) printf("[%s:%i] %s\n", __FILE__, __LINE__, (MSG))
Run Code Online (Sandbox Code Playgroud)
由于在日志中拥有调试消息的确切来源非常有用,因此这是一种非常常见的模式.但是如果你使用了一个函数,就像这样:
void DEBUG(const char *MSG) {
printf("[%s:%i] %s\n", __FILE__, __LINE__, (MSG));
}
Run Code Online (Sandbox Code Playgroud)
然后你只能看到与printf()调用相对应的文件名和行号DEBUG(),而不是那些调用的代码DEBUG().