我知道 C++ 文件开头的定义是预处理器指令,因此“预处理器在代码的实际编译开始之前执行,因此预处理器在语句 [1] 生成任何代码之前消化所有这些指令”。
现在,如果我有这个简单的例子怎么办:
#define PRINT(function) printFnctionName(#function)
void printFnctionName(string name)
{
cout << name;
}
void test(){};
int main(int argc, char *argv[])
{
PRINT(test);
}
所以现在我的问题实际上是预编译器如何知道将传入什么函数?预编译/链接/编译是如何真正发生的?
另外,我使用define而不是常规函数的原因是因为我无法找到复制此功能的方法`#function来检索函数的名称