返回GNU g ++编译器下的main()类型

问题描述 投票:1回答:2

至于ISO_14882_2014

3.6启动和终止[basic.start]

3.6.1主要功能[basic.start.main]

2实现不应预定义主要功能。此功能不应过载。它应具有int类型的声明返回类型,否则其类型是实现定义的。

但其他类型是实现定义的。这意味着编译器可能有自己的main()返回类型。你能指点我到GNU G ++编译器关于main()的返回类型的位置。

c++ g++
2个回答
4
投票

返回类型必须是int;下面的“它的类型”是指main,而不是返回类型。也就是说,main所采用的参数是实现定义的。但是,每个实现必须至少提供int main()int main(int, char**)


1
投票

假设i386架构。从glibc start.S我们称__libc_start_main。从glibc csu/libc-start.c __libc_start_main我们用指针类型main调用int (*main) (int, char **, char **)MAIN_AUXVEC_DECL不应该在i386上定义,我认为,仅适用于powerpc)。所以main函数的实现定义类型是int main(int, char **, char **)。由于堆栈如何在i386上运行,因此形式int main(void)int main()以及int main(int)int main(int, char**)将起作用。 main返回类型是int

© www.soinside.com 2019 - 2024. All rights reserved.