c - 使用调试宏而不是简单的函数有什么好处?

标签 c debugging

对于 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/

相关文章:

c++ - 这种壁垒的做法对吗?

无法弄清楚我的 switch 语法有什么问题

ios - 在 Xcode - Cordova App 中显示 console.log

java - 在 Eclipse 中调试大插件

javascript - 在 Vue.js 中调试

c - 用 C 语言复制 Spinrite 动画效果

c - 返回指向返回相同类型的函数的函数指针

c - 如何仅使用指针和指针算术删除 c 中所有出现的字母。

C++:当我的应用程序在随机位置崩溃时从哪里开始?

javascript - V8 快照二进制文件/调试规范