为什么c允许main(),即使它不是int main()或void main()?

时间:2012-06-16 22:18:37

标签: c syntax

在阅读K& R第二版时,我注意到程序始终以 "主(){&#34 ;.我一直认为main()必须在它之前有int或void。所以它看起来像" int main()"或" void main()"。什么是" main()"有什么区别?

3 个答案:

答案 0 :(得分:7)

main()是旧的K& R样式,其中int被省略,因为如果未指定,则返回类型默认为int(您应该指定它)。另外,空括号是K& R样式以表明它不带参数..在C99中,现在应该void来表示这样。空括号表示该函数将接受任意类型的任意数量的参数,这显然不是您想要的。所以最终的结果是:

int main(void) { ... }

main()应该返回int ..约定说最后的return 0;语句将帮助向调用者指示程序执行成功 - 非0返回值表示异常终止。

对您的问题更直接的回答是main() { ... }有效,因为它没有错。编译器发现没有为main函数声明返回类型,因此默认为int。空括号向它指示main接受任何类型的任意数量的参数,这也没有错。但是,要符合C99样式/标准,请使用

int main(void) { ... }

答案 1 :(得分:0)

因为旧版c。

支持此功能
main()

相当于

int main()

答案 2 :(得分:-3)

语法大多数时候取决于编译器。例如,当您使用visual c ++时,您会编写“void main”,但是当您使用GCC时,您应该编写“int main()”,然后在程序完成好或坏的情况下返回0或1。