C ++标准第3.6.1 / 3节说
main的链接是实现定义的
这是什么意思?为什么要定义实现? C也一样吗?
答案 0 :(得分:6)
因为禁止引用函数main
(如果引用整个规则会有帮助),main
的链接对用户代码完全没有影响:
函数main不得在程序中使用。
main
的链接是实现定义的。将main
定义为已删除或将main
声明为inline
,static
或constexpr
的程序格式不正确。名称main
未另外保留。
Linkage控制名称可用的范围,main()
函数的名称在任何地方都无法用于代码,因此尝试使用链接标记它是没有意义的。< / p>
答案 1 :(得分:2)
C ++的目的是提供一种可编程的可移植抽象。标准规定了很多东西,无论你是否将C ++翻译成汇编,JavaScript,奶酪,煎锅或超模,都是明确的。
main
的链接不是其中之一,因为它有点抽象泄漏:它(理论上)是与执行机器/奶酪/煎锅的各个部分相互作用的功能。处理跨越该边界的数据。数据输入,数据输出。
关于main
函数的实质性详细信息不应该是标准规定的,因为main
的整个目的是与标准无法控制的事物进行交互。
话虽如此,there are still significant restrictions emplaced upon main
,并且在大多数实现中它甚至没有用作入口点 - 编译器的C ++运行时中的某些内部函数通常会充当入口点,执行静态初始化和其他一些事情在调用main
之前,因为,那是关于唯一理智的方法。