gpt4 book ai didi

c++ - #defines 调用方法的内部工作

转载 作者:行者123 更新时间:2023-11-30 02:57:38 26 4
gpt4 key购买 nike

我知道 C++ 文件开头的定义是 Preprocessor directives所以“预处理器在代码的实际编译开始之前执行,因此预处理器在语句 [1] 生成任何代码之前消化所有这些指令”。

现在如果我有这个简单的例子会怎么样:

#define PRINT(function) printFnctionName(#function)

void printFnctionName(string name)
{
cout << name;
}

void test(){};
int main(int argc, char *argv[])
{
PRINT(test);
}

所以现在我的问题是预编译器如何知道将传入什么函数?预编译/链接/编译是如何真正发生的?

此外,我使用 define 而不是常规函数的原因是因为我无法找到复制此功能的方法`#function to retrieve the name of a function

最佳答案

So now my question is really how does the precompiler know what function will be passed in? and how is the pre-compilation/linking/compilation really happening?

预处理器什么都不知道。它只是用定义的值替换文本并将您传入的值字符串化。

所以编译器看到了:

void printFnctionName(string name)
{
cout << name;
}

void test(){};
int main(int argc, char *argv[])
{
printFnctionName("test");
}

关于c++ - #defines 调用方法的内部工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14420010/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com