Hello编程世界。
我目前正在大学完成我的第一个编程课程,我们的讲师说了这个功能
int main (); //without the curly braces// is valid.
我可能听错了他/误解了他,因为当我尝试用它运行控制台时,它会出错。但是当我做 int main(){}; 时它运行正常。 所以: 1.无论身体内容如何,都需要花括号吗?
如果没有返回0,函数如何运行。
使用它,可能的最短的int main / void主函数是什么?
根据要求,这是错误:
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)
非常感谢你:)
答案 0 :(得分:4)
在C ++中,main
有两个正确的定义:
int main() {
// ...
}
和
int main(int argc, char *argv[]) {
// ...
}
或同等学历。 (其他实现定义的表单是可能的,但我们可以忽略它们。返回类型总是int
,至少对于托管实现; void main()
是错误的。)
大括号{
和}
是函数定义语法的一部分;它们不是可选的。
您可以为main
提供声明,例如
int main();
但这样做没有实际意义。这是一个宣言,而不是一个定义 - 你仍然需要在某个地方有一个定义。
最后不需要return 0;
。这是一种特殊情况,仅适用于main
,而不适用于其他函数:如果执行到达结束}
,则执行隐式return 0;
。
最短的法律程序可能是:
int main(){}
答案 1 :(得分:0)
这是函数定义和声明之间的区别(请参阅What is the difference between a definition and a declaration?
基本上是int main();是一个原型告诉编译器你将有一个名为main的函数,它返回一个int,但你还没有实现它。
int main(){}是函数的实现,因此是花括号,给它一个函数体和完整的实现。
答案 2 :(得分:0)
我想澄清一些事情。
int main();
是一个函数声明,即它让其他函数/类知道它
但是,它没有定义 main
,这意味着它没有说明main
实际上做了什么。
由于每个C ++程序都必须定义 main
,因为它首先运行,所以编译器肯定会产生编译错误。
写作
int main() {}
您定义 main
,指定main
什么也不做,所以它会运行。
最后,如果您没有返回任何内容,C ++编译器将隐式添加return 0;
语句,因为它是操作系统成功运行的指示器。
有关详情,请参阅https://stackoverflow.com/a/204483/2512775 main
应返回的内容。
答案 3 :(得分:0)
您的错误代码表示您尚未正确声明main()函数。你应该做的是添加花括号来表示应用程序将运行的代码块。
虽然如果没有给出一个返回语句,编译器会添加一个返回语句,只需添加一个以确保它。