如果将main定义为函数的引用,会有什么影响呢?
#include<iostream>
#include<cstring>
using namespace std;
int main1()
{
cout << "Hello World from main1 function!" << endl;
return 0;
}
int (&main)() = main1;
会发生什么?我在一个在线编译器中测试时出现了“分段错误”的错误:
在VC++ 2013下它将创建一个在运行时崩溃的程序!
一段调用函数指针数据作为代码的代码将被编译,这将在启动时立即崩溃。
我还想引用ISO C++标准上的相关内容。
如果想要根据某个宏定义来定义两个入口点中的任何一个,那么这个概念将是有用的,例如:
int main1();
int main2();
#ifdef _0_ENTRY
int (&main)() = main1;
#else
int (&main)() = main2;
#endif
main
不应在程序内使用。”这包括将其用于初始化引用。(并不是说这与问题有任何关系,问题是关于允许main
成为什么类型的实体。) - Mike Seymour