通过函数指针定义"main"

jle*_*ahy 3 c c++ linker linker-scripts

在C++中,main是否可以通过函数指针定义?例如:

int f(int, char**) {
    return 0;
}

int (*main)(int, char**) = &f;
Run Code Online (Sandbox Code Playgroud)

此代码正确编译和链接,但在运行时会触发分段错误.我相信这可能是因为它试图将函数指针的值作为代码执行.

另外,如果在普通的C++中不可能,那么可以通过gcc的非标准功能来实现(可能以某种方式改变导出符号的类型).

最后,如果使用gcc指令无法实现,可以使用自定义链接描述文件吗?

And*_*owl 6

C++标准的第3.6.1/1段说:

"程序应包含一个名为main 的全局函数,它是程序的指定开始"

这使得指针声明非法.

  • @jleahy:我想其他问题的答案是"不要那样做".这不是合法的C++. (4认同)