我曾被教导函数需要进行声明才能调用。为了说明这一点,以下例子会出现错误,因为函数sum
没有进行声明:
#include <iostream>
int main() {
std::cout << "The result is " << sum(1, 2);
return 0;
}
int sum(int x, int y) {
return x + y;
}
// main.cpp:4:36: error: use of undeclared identifier 'sum'
// std::cout << "The result is " << sum(1, 2);
// ^
// 1 error generated.
为了解决这个问题,我会添加以下声明:
#include <iostream>
int sum(int x, int y); // declaration
int main() {
std::cout << "The result is " << sum(1, 2);
return 0;
}
int sum(int x, int y) {
return x + y;
}
为什么与其他函数不同,
main
函数不需要声明就能使用?
main
函数。但在C++中不行,因为它不仅仅是一个普通的函数,而是特殊的。历史上,编译器会在main
函数中添加代码来初始化需要动态初始化的全局变量;如果在程序内部调用main
函数,将会重新初始化这些变量,结果会是混乱的。 - Pete Beckermain
函数放在最后一个位置,这样您就不需要为该文件中定义的其他函数进行前向声明。与C#和Java不同,它们通常会将main
函数放在第一位,尽管在这些情况下并不要求这样做。 - Codymain
,函数的定义也声明了该函数。这就是为什么可以将sum
移到main
之前,以避免需要单独声明sum
的原因。 - Ross Ridge