【问题标题】:int main(void) vs main() [duplicate]int main(void) vs main() [重复]
【发布时间】:2017-10-07 18:29:30
【问题描述】:

我正在阅读The C Programming Language,第一个程序是打印Hello World,我编写了书中所示的代码:

#include <stdio.h>

main()
{
    printf("hello, world\n");
}

但我收到了一个错误warning: type specifier missing, defaults to 'int' [-Wimplicit-int] main() 。我通过编写如下代码来修复它:

#include <stdio.h>

int main()
{
    printf("hello, world\n");
}

谁能告诉我有什么区别,我为什么要这样写?

【问题讨论】:

  • C++ 部落与 C 部落交战。通过保持 C++ 和 C 标记分开来维持脆弱的休战。
  • @Ron 我一直在想为什么我的卧室在一场激烈的战斗之后看起来像这样。现在我知道了——因为我同时使用两者,所以我必须至少有两个人格,而且当我睡觉时他们会打架。
  • @melpomene 都被问了很多次 - 甚至不值得评论 - OP 甚至没有使用谷歌
  • @melpomene 已修复。您现在可以删除评论:D
  • @bolov 不正确。 main() 与隐式 int 仍然返回 int,并且不接受任何参数。

标签: c main


【解决方案1】:

旧版本的 C 具有默认类型的概念。如果声明的变量没有类型,则假定为int。与函数类似,如果定义的函数没有返回类型,也假定返回int

较新的 C 版本(即小于 25 年的版本)取消了默认类型并在这种情况下输出警告。最好明确指定类型以避免歧义并与更现代的 C 保持一致。

【讨论】:

  • Older versions of C 你应该改用ancient这个词
猜你喜欢
  • 2018-03-16
  • 2013-11-04
  • 2016-01-05
  • 1970-01-01
  • 1970-01-01
  • 2016-07-24
  • 2012-03-10
  • 2012-08-26
  • 1970-01-01
相关资源
最近更新 更多