这是个好问题,但是这个问题恐怕比你想的水深得多。
C++程序以main函数为入口这个说法严格来说并不正确。
我这里不展开,只简单的谈谈。
要解决这个问题,我们先要看所谓的入口是什么意思,到底有什么用处。
一个程序需要怎么运行呢?在Windows上就是编译成一个exe文件,然后双击,Windows就会帮你运行这个文件。Windows怎么知道怎么去运行这个文件?这么一大堆代码应该从哪里开始执行?就需要这个文件提供一个所谓的入口,操作系统(或者说启动器)从这个入口开始执行程序。
在这个例子里面,Windows就是这个程序的宿主/启动器,这个宿主/启动器要求程序需要一个入口也就是main函数。
所以,所谓的入口,是和宿主(Host)/启动器(Launcher)有关系的,对于Web服务应用,他的宿主是什么呢?.NET的话一般是http://ASP.NET,http://ASP.NET的宿主是IIS。宿主不同,对入口的要求也就不同。因为.NET的宿主是http://ASP.NET,http://ASP.NET不要求程序有一个所谓的入口函数,所以http://ASP.NET应用也就没有main函数。
事实上Java和C#的控制台应用程序也是有Main函数的,但是这里历史原因更多,利用函数签名来查找入口的做法并不是最好的。