代码`#define LOG_DBG(x)`是什么意思?

时间:2014-07-09 07:54:49

标签: c

首先,它声明宏LOG_DBG(x)就像这样:

#define LOG_DBG(x)

然后,像这样使用它:

LOG_DBG((LOG_MISC, 80, __FUNCTION__": select reports %d", res));

我无法理解宏意味着什么?它会做什么?

3 个答案:

答案 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的对数,它将是另一个表达式。