C程序中的main
和C ++程序之间有什么区别?
除了
语法:
int main() { /* … */ }
int main(int argc, char* argv[]) { /* … */ }
int main() , void main() ,etc ...
主要是:
C Program& C ++程序
根据ISO标准,C ++ 98,C ++ 03和C ++ 0x之间是否有任何差异?即程序的入口点(程序启动实现)等
答案 0 :(得分:10)
在现代C和现代C ++中:
main
始终为int main()
或int main(int, char*[])
。return
。return 0
。 [(我现在已经检查了C99标准并编辑了这一段。)]对于第二个问题,在C99中,您必须正好拥有两个main
函数中的一个。在C ++中,标准表示如果程序具有返回main
的{{1}}函数,并且每个符合要求的实现必须接受两个列出的版本作为入口点(对于“托管”),则程序格式良好。程序“,例如不适用于Linux内核);见3.6.1。 [/ edit]据我所知,调用约定也不是标准的一部分。
我不明白你关于内存的问题,但要注意C99和C ++ 03都没有任何东西,只有一个基本的内存模型,而新的C ++ 0x明确添加了一个内存模型,以便能够很好地实现定义并发和原子操作。
答案 1 :(得分: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);
}
答案 2 :(得分:1)
C99和C ++符合托管环境中main
的定义。有两个允许的功能接口
int main(void);
int main(int, char*[]);
两种语言都允许从main
隐式返回而没有return
语句,在这种情况下,返回值EXIT_SUCCESS
将返回给调用者。
答案 3 :(得分:1)
编辑:程序启动实现有什么区别是c ++ 98,C ++ 03,C +++ 0x main等有什么区别.........
不在main
。然而,在C与C ++中调用之前之前发生的事情存在巨大差异。在C ++中,具有static
存储的对象通常在输入main
之前初始化。
注意:强>
允许实现在main
中执行静态数据的动态初始化,但必须在首次引用该静态数据之前执行此操作。我从未遇到过利用这种灵活性的实现。