首先,它声明宏LOG_DBG(x)
就像这样:
#define LOG_DBG(x)
然后,像这样使用它:
LOG_DBG((LOG_MISC, 80, __FUNCTION__": select reports %d", res));
我无法理解宏意味着什么?它会做什么?
答案 0 :(得分:4)
它什么都没做。它被预处理为空字符串。这可能是禁用/启用调试日志消息的一种方便的方法。代码可能在某些时候写得这样:
#define LOG_DBG(x) some_logging_function(x)
但是有人想简单地一次性删除所有日志消息。
答案 1 :(得分:1)
它什么都不做。您正在看到宏的“禁用”形式,用于使日志调用在非调试版本中消失。
在某处应该有宏的另一个声明,或者代码可能只是在非调试状态下“离开”。
答案 2 :(得分:1)
您已定义了一个接收x作为参数但不执行任何操作的宏。这是宏的具体用法:
#include <stdio.h>
#define LOG_DBG(x) ((x)+5)
int main(int argc, char *argv[])
{
int x = LOG_DBG(3);
printf("%d\n", x);
return 0;
}
在这里,我们在宏中做了一些事情,因此将打印数字8。
当然,如果你想要x的对数,它将是另一个表达式。