调用这个函数(没有定义)是如何工作的?
How does calling this function (without a definition) work?
所以我试图掌握某人的代码(但无法联系到他们),但我不明白他们为什么这样做。他们在 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 函数似乎没有任何最终定义,我不明白为什么代码会调用它。有人可以解释一下吗?
LOG_AddFunction
不是函数。它是一个类似函数的宏。它唯一的 "definition" 正是您在问题中向我们展示的内容。
它的目的是自动调用LOG_Add
,调用处的函数名(__FUNCTION__
)自动传递。每当您编写 LOG_AddFunction()
时,这些字符都会被预处理器自动替换为 LOG_Add(LOG_TYPE_NORMAL, "%s()", __FUNCTION__)
.
(就像任何其他宏一样)
这节省了每次输入整个 LOG_Add
电话;仅此而已。
所以我试图掌握某人的代码(但无法联系到他们),但我不明白他们为什么这样做。他们在 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 函数似乎没有任何最终定义,我不明白为什么代码会调用它。有人可以解释一下吗?
LOG_AddFunction
不是函数。它是一个类似函数的宏。它唯一的 "definition" 正是您在问题中向我们展示的内容。
它的目的是自动调用LOG_Add
,调用处的函数名(__FUNCTION__
)自动传递。每当您编写 LOG_AddFunction()
时,这些字符都会被预处理器自动替换为 LOG_Add(LOG_TYPE_NORMAL, "%s()", __FUNCTION__)
.
这节省了每次输入整个 LOG_Add
电话;仅此而已。