int main(void) 给出错误

int main(void) giving error

本文关键字:出错 错误 void main int      更新时间:2023-10-16

你好编程世界。

目前正在大学里上我的第一门编程课程,我们的老师说这个功能

int main (); //without the curly braces// is valid. 

我可能听错了他/误解了他,因为当我尝试使用它运行控制台时,它会给出错误。但是当我做int main() {}时;它运行良好。所以:1. 无论身体内容如何,都需要花括号吗?

  1. 函数如何在没有返回 0 的情况下运行。

  2. 使用它,最短的 int main/void main 函数是什么?

根据要求,这是错误:

Undefined symbols for architecture x86_64:
  "_main", referenced from:
     implicit entry/start for main executable
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

非常感谢:)

在C++中,main有两个正确的定义:

int main() {
    // ...
}

 int main(int argc, char *argv[]) {
     // ...
 }

或同等学历。(其他实现定义的形式是可能的,但我们可以忽略这些形式。并且返回类型始终是 int ,至少对于托管实现; void main()错了。

大括号{}是函数定义语法的一部分;它们不是可选的。

您可以提供main的声明,例如

int main();

但这样做没有真正的意义。这是一个宣言,而不是一个定义——你仍然需要在某个地方有一个定义。

最后不需要return 0;。这是一个特例,仅适用于main,不适用于其他函数:如果执行到达关闭},则执行隐式return 0;

最短的法律课程可能是:

int main(){}

这就是函数定义和声明之间的区别(请参阅定义和声明之间有什么区别?

基本上 int main(); 是一个原型,告诉编译器你将有一个名为 main 的函数,它返回一个 int,但你还没有实现它。

int main() {} 是函数的实现,因此大括号,给它一个函数体和完整的实现。

我想

澄清几件事。

int main();

是一个函数声明,即它让其他函数/类知道它。
然而,它没有定义main,这意味着它没有说明main实际做了什么。
由于每个C++程序都必须定义main,因为它首先运行,因此您的编译器肯定会给出编译错误。

通过写作

int main() {}

您通过指定main不执行任何操作来定义main,因此它将运行。

最后,如果您不返回任何内容,C++编译器将隐式添加 return 0; 语句,因为它是操作系统程序成功运行的指示器。

有关详细信息,请参阅main应返回的内容 https://stackoverflow.com/a/204483/2512775。

您的错误代码意味着您没有正确声明 main() 函数。您应该做的是添加大括号来表示应用程序将在其中运行的代码块。

尽管编译器将添加一个 return 语句(如果未给出一个),但只需添加一个即可。

相关文章: