初学linux开发,完全看不懂,还请大佬帮我解读一下以下代码什么意思?

#ifdef DEBUG#define dbg_info(fmt, args...) printf(fmt, #args)#else#define dbg_info(fmt, args...)#endif#define dbg_err(fmt, args...) printf(fmt, #args)

比如dbg_info("Could not open file %s, with size %d", "/tmp/test.txt", 1024);
就会被替换成:
printf("Could not open file %s, with size %d", "/tmp/test.txt", 1024);
当然这是在 DEBUG被定义的情况下
否则dbg_info("Could not open file %s, with size %d", "/tmp/test.txt", 1024);
会被替换成追问

否则什么?就是那儿看不懂

追答

否则就会被替换成“啥也没有”,因为是啥也没有,所以我没写任何东西。
我以为你能理解

刚才追答显示不出来吗?
如果定义了宏DEBUG,那么代码里所有你写dbg_info的调用,都会被替换成printf
否则,被替换成啥也没有。
这样的好处是,只要你定义DEBUG,编译一遍,就能得到一个日志很多的版本,
你去掉DEBUG的定义,再编译一次,就能得到一个日志很少的版本。
避免了你改动多处代码。

温馨提示:内容为网友见解,仅供参考
第1个回答  2020-02-09
#ifdef DEBUG // 如果定义了 debug,即如果开启了debug模式
开启了debug模式才会输出调试信息,否则只调用函数追问

可是这个函数dbg_info(fmt, args...)没有申明啊

追答

应该是在其他源文件中定义了

相似回答