Nol*_*rin 37
我不确定现在的标准是什么,但在传统的ANSI C中,使用空括号表示该函数可以使用任意数量的参数.void
另一方面,声明一个参数表明该函数只接受零参数.在这种情况下(以及许多其他情况),它实在无关紧要.
如果你想要严格,最好定义void
参数.当然,main
函数也可以定义为int main(int argc, const char* argv[])
- 这是完全有效的,但如果你不关心参数,通常是不必要的.
Tim*_*fer 18
从C99标准:
5.1.2.2.1程序启动
程序启动时调用的函数名为main.该实现声明此函数没有原型.它应该使用int的返回类型定义,并且没有参数:
Run Code Online (Sandbox Code Playgroud)int main(void) { /* ... */ }
或者有两个参数(这里称为argc和argv,虽然可以使用任何名称,因为它们是声明它们的函数的本地名称):
Run Code Online (Sandbox Code Playgroud)int main(int argc, char *argv[]) { /* ... */ }
或同等学历; 或者以某种其他实现定义的方式.
当main没有参数定义时,argc和argv是否仍然存在于堆栈中?
main()的这些原型都是非标准的.
关于该问题的精确度可以在comp.lang.c faq上找到:http://c-faq.com/decl/main.html
编辑:将"错误"改为"非标准",因为规范允许实现定义的原型.
归档时间: |
|
查看次数: |
25494 次 |
最近记录: |