据我所知,C99要求int main(void)
符合C11标准。因此int main()
对于此标准中的主要功能不正确。
但是哪个C(不是C ++)标准允许主函数的int main()
定义?
感谢并尊重Alex
答案 0 :(得分:2)
我个人显然更喜欢带(void)
的版本,因为用原型声明函数通常更好。但是int main() { ... }
形式也是正确的,只要你在定义而不是声明中使用它,实际上C标准在许多例子中都使用了这个形式。
这里定义并声明了一个没有原型的函数,但对于一个定义,很明显该函数没有接收任何参数。
如果您尝试提供main
的前向声明,则不应使用该表单,因为如果您错误地调用该函数,则不会发出警告。这里C和C ++也不同,因为C允许你自己调用main
,甚至是递归地调用C ++禁止这样的事情。
答案 1 :(得分:1)
根据C89(http://web.archive.org/web/20030222051144/http://home.earthlink.net/~bobbitts/c89.txt),main
方法以两种方式定义
int main(void)
{
// ...
}
或
int main(int argc, char *argv[])
{
// ...
}
据我所知这是第一个标准定义,所以我认为int main()
只能在C ++标准中很好地定义。
但是,我仍然使用它:)
答案 2 :(得分:0)
如果您仍然不确定在其他答案之后要使用什么,我建议您为空参数定义:
#if 0
#define NO_PARAM
#else
#define NO_PARAM void
#endif
如果是主要功能,你可以写
int main(NO_PARAM){
...
}
如果您稍后改变主意,您可以简单地使用首选定义,而无需手动更改所有功能签名(没有参数)。