使用#define的C和C++文档表明,这不应该起作用,因为我正在使用define将文本MyFunc((替换为_MyFunc((这是一个不存在的函数:
#define MyFunc _myfunc
void MyFunc()
{
cout << "This Prints!" << endl;
}
int Main()
{
_myfunc();
return 0;
}
我的猜测是编译器很聪明。它知道_myfunc((不存在,因此不会替换文本,并简单地使用myfunc((。
我找不到任何文件来支持这一理论。有人知道这是否正确吗?
预处理器运行后,您的程序将看起来像:
void _myfunc()
{
cout << "This Prints!" << endl;
}
int Main()
{
_myfunc(); // #1
return 0;
}
忽略此处的其他错误(缺少includes,…(,编译器可以找到声明和定义的_myfunc
,因此自然会在调用站点#1
通过重载解析找到它。