据我所知,int main(void)
是C99和C11标准所要求的。因此,int main()
对于此标准中的主函数是不正确的。
但是哪种C(不是C++)标准允许主函数的int main()
定义?
感谢并问候Alex
发布于 2015-10-08 17:37:47
我个人显然更喜欢使用(void)
的版本,因为使用原型声明函数通常更好。但是,表单int main() { ... }
也是正确的,只要您在定义而不是声明中使用它,事实上,C标准在许多示例中都使用了这种表单。
在这里,它定义并声明了一个没有原型的函数,但是对于一个定义来说,很明显该函数不会接收任何参数。
如果您试图给出main
的转发声明,则不应该使用该形式,因为如果错误地调用了函数,将不会出现任何警告。在这里,C和C++也是不同的,因为C允许你自己调用main
,即使是递归的,而C++禁止这样的事情。
发布于 2015-10-08 18:04:41
根据C89 (http://web.archive.org/web/20030222051144/http://home.earthlink.net/~bobbitts/c89.txt),main
方法有两种定义方式
int main(void)
{
// ...
}
或
int main(int argc, char *argv[])
{
// ...
}
据我所知,这是第一个标准定义,所以我假设只有在C++标准中才能很好地定义int main()
。
但是,我仍然使用它:)
发布于 2015-11-02 22:09:17
如果您仍然不确定在其他答案之后使用什么,我建议为空参数定义:
#if 0
#define NO_PARAM
#else
#define NO_PARAM void
#endif
在main函数的情况下,您可以编写
int main(NO_PARAM){
...
}
如果你后来改变了主意,你可以简单地使用首选的定义,而不需要手动更改所有的函数签名-这些签名应该没有参数。
https://stackoverflow.com/questions/33011668
复制相似问题