\n\nmain 这个名字有什么特别的地方还是任意的?
\n
C 程序入口点(在托管环境中)的名称“main”不是任意的,而是由C 标准定义的:
\n\n\n5.1.2.2.1 程序启动
\n1 \xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 程序启动时调用的函数名为
\nmain
。该实现没有声明此函数的原型。它应使用 int 返回类型定义,并且不带任何参数:
\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0int main(void) { /* ... */ }
\也不带两个参数(此处称为argc
and\nargv
,尽管任何可以使用名称,因为它们对于声明它们的函数来说是本地的):
\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0int main(int argc, char *argv[]) { /* ... */ }
\n\n在C中main函数可以被称为其他函数吗?
\n
用于编译/构建 C 程序的大多数主流工具链确实提供了为入口点过程使用其他名称的方法:通常,链接器选项显式指定名称,如此处所述。然而,此类程序并不严格符合C标准,可能会导致可移植性问题,如所引用的C标准草案的“附录J”所示:
\n\n\nJ.3 实现定义的行为
\n\xe2\x80\xa6
\n
\n J.3.2 环境
\n\xe2\x80\xa6
\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xe2\x80\x94 调用的函数的名称和类型在独立环境中程序启动时
\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xe2\x80\x94main
定义函数的另一种方式\n