所以我试图抓住某人的代码(并且无法与他们联系),我不明白为什么他们会这样做。他们像这样调用main中的函数:
LOG_AddFunction();
此函数在头文件中定义,如下所示:
#define LOG_AddFunction() LOG_Add(LOG_TYPE_NORMAL, "%s()", __FUNCTION__)
然后LOG_Add在同一个头文件中定义:
extern int LOG_Add(LOG_TYPE eType, const char *pcText, ...);
似乎没有LOG_AddFunction函数的任何最终定义,我不明白为什么代码会调用它。有人可以对此有所了解吗?
答案 0 :(得分:7)
LOG_AddFunction
不是一个功能。它是一个类似函数的宏。它唯一的定义"正如你在问题中向我们展示的那样。
其目的是自动调用LOG_Add
,并在呼叫站点(__FUNCTION__
)自动传递函数的名称。无论何时编写LOG_AddFunction()
,这些字符都会被预处理器(与任何其他宏一样)自动替换为LOG_Add(LOG_TYPE_NORMAL, "%s()", __FUNCTION__)
。
这样可以节省每次输入LOG_Add
个电话的费用;仅此而已。