为什么C#具有静态Main()但C++没有静态main

Rot*_*eel 0 c# c++

出于好奇,C#需要一个静态Main(),一些模块(可能来自OS)调用Main而不创建对象但是为什么C++不适用?当然在C++中,main不是任何类的一部分.如何从我的应用程序的外部以两种不同的方式调用它们?

为什么C#主要不像C++那样主要,是不是因为C#刚刚引入(仅用于命名约定),因为方法应该以大写字母或某些或其他原因开头?

das*_*ght 11

Mainvs main而言,情况很简单:微软决定Main遵守自己的资本化命名惯例.

然而,static与非对象的情况static需要更多背景:C++具有C#所不具备的东西 - 即独立函数(即不是任何类的成员的函数).将static关键字应用于C++函数时,其含义会根据函数是类的成员还是独立的函数而更改.

当您static在C++中应用成员函数时,其含义与C#中的相同,即函数成为类函数,而不是实例函数.

当您应用于static独立的非成员函数时,含义会发生变化:C++编译器使函数在给定的转换单元外部不可见.除此之外,这使得C++运行时库中处理启动并将控制权传递给您的main函数的部分不可见该函数.

由于C++标准规定,入口点是通过非成员函数,施加staticmain将从C++运行时隐藏它,使它不能用作入口点.有关如果制作静电会发生什么的更多信息,请参阅此问答main.