C&C++中main的区别是什么

use*_*747 3 c c++ c++11

mainC程序和C++程序有什么区别?

以外

  1. return语句(C中默认为1,C++中为0)
  2. 句法:

    int main() { /* … */ }
    int main(int argc, char* argv[]) { /* … */ }
    int main() ,  void main() ,etc ...     
    
    Run Code Online (Sandbox Code Playgroud)

主要是:

  1. C程序和C++程序中的main之间的区别

  2. 根据ISO标准,C++ 98,C++ 03和C++ 0x之间是否有任何差异?即程序的入口点(程序启动实现)等.

Ker*_* SB 10

在现代C和现代C++中:

  • main永远是int main()int main(int, char*[]).
  • 在C89中,您必须return明确地使用main.
  • 在C99和C++中,如果没有显式返回,则隐式return 0.

[ (我现在已经检查了C99标准并编辑了这一段.) ]对于第二个问题,在C99中你必须正好具备这两个main功能中的一个.在C++中,标准表示如果程序具有main返回的函数,则程序格式良好int,并且每个符合要求的实现必须接受两个列出的版本作为入口点(对于"托管程序",例如不适用于Linux内核) ; 见3.6.1.[/ edit]据我所知,调用约定也不是标准的一部分.

我不明白你关于内存的问题,但要注意C99和C++ 03都没有任何东西,只有一个基本的内存模型,而新的C++ 0x显式添加了一个内存模型,以便能够定义良好的并发和原子操作.

  • 在c ++中,符合条件的实现可以接受main的其他不同签名,只要它接受这两个签名即可. (3认同)
  • @Gene:嗯,你在任何给定的程序中只能有一个`main`,但它可以有任意签名,只要它返回`int`,它仍然是一个格式良好的程序.它可能无法在您的平台上运行.:-) (2认同)

pmg*_*pmg 8

在C中,与C++相反,main可以递归调用.

/* valid C */
#include <stdio.h>
int main(int argc, char **argv) {
  putchar(argc ? '.' : '\n');
  if (argc == 0) return 0;
  return main(argc - 1, NULL);
}
Run Code Online (Sandbox Code Playgroud)

  • @Kerrek:3.6.1/3:"函数main不能在程序中使用." (5认同)