对于 printf
风格的调试,人们似乎总是使用预处理器宏。类似这个的解决方案有什么问题吗?
void debug(char *msg) {
#ifdef DEBUG
printf("%s", msg);
#endif
}
最佳答案
通常这样他们就可以做这样的事情:
#define DEBUG(MSG) printf("[%s:%i] %s\n", __FILE__, __LINE__, (MSG))
由于在日志中提供调试消息的确切来源非常有用,因此这是一种非常常见的模式。但是如果你使用了一个函数,就像这样:
void DEBUG(const char *MSG) {
printf("[%s:%i] %s\n", __FILE__, __LINE__, (MSG));
}
然后您将只能看到与 DEBUG()
中的 printf()
调用相对应的文件名和行号,而不会看到那些代码称为 DEBUG()
。
关于c - 使用调试宏而不是简单的函数有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10744534/