C int main() vs. int main(void)



据我所知int main(void)是C99和C11标准所要求的。因此,int main()在本标准中的主要功能是不正确的。

但是哪个C(不是c++)标准允许主函数的int main()定义?

Thanks and regards Alex

我个人显然更喜欢(void)的版本,因为用原型声明函数通常更好。但是形式int main() { ... }也是正确的,只要你在定义而不是声明中使用它,事实上C标准在许多例子中使用这种形式。

这里定义并声明了一个没有原型的函数,但是对于定义来说,很明显这个函数不接受任何参数。

如果你试图给出main的前向声明,你不应该使用这种形式,因为如果你错误地调用了函数,将不会有警告。这里C和c++也是不同的,因为C允许你自己调用main,甚至递归地调用,而c++禁止这样的事情。

根据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++标准中有很好的定义。

但是,我仍然使用它:)

如果您仍然不确定在其他答案之后使用什么,我建议对空参数进行定义:

#if 0
 #define NO_PARAM
#else
 #define NO_PARAM void
#endif
如果是main函数,你可以写
int main(NO_PARAM){
...
}

如果您后来改变了主意,您可以简单地使用首选定义,而不需要手动更改所有函数签名(不应该有参数)。

相关内容