为什么我的HelloWorld函数没有在这个范围内声明?

#include <iostream> using namespace std; int main() { HelloWorld(); return 0; } void HelloWorld() { cout << "Hello, World" << endl; } 

我正在用g ++得到下面的编译错误:

 l1.cpp: In function 'int main()': l1.cpp:5:15: error: 'HelloWorld' was not declared in this scope 

您需要先声明或定义函数,然后才能使用它。 否则,它不知道HelloWorld()作为函数存在。

在你的主要function之前添加这个:

 void HelloWorld(); 

或者,您可以在main()之前移动HelloWorld()的定义:

 #include <iostream> using namespace std; void HelloWorld() { cout << "Hello, World" << endl; } int main() { HelloWorld(); return 0; } 

您必须先声明该function,然后才能使用它:

 #include <iostream> using namespace std; void HelloWorld(); int main() { HelloWorld(); return 0; } void HelloWorld() { cout << "Hello, World" << endl; } 

或者你可以在main()之前移动HelloWorld()的定义

你需要转发声明HelloWorld()所以main知道它是什么。 像这样:

 #include <iostream> using namespace std; void HelloWorld(); int main() { HelloWorld(); return 0; } void HelloWorld() { cout << "Hello, World" << endl; } 

你需要在调用之前有一个函数的原型,或者在它之前有整个函数。

所以第一个是:

 void HelloWorld(); int main() { HelloWorld(); return 0; } void HelloWorld() { cout << "Hello, World" << endl; } 

第二种方法是:

 void HelloWorld() { cout << "Hello, World" << endl; } int main() { HelloWorld(); return 0; } 

由于某种原因没有人提到了另一种可能性,即使用extern声明:

 #include <iostream> using namespace std; int main() { extern void HelloWorld(); HelloWorld(); return 0; } void HelloWorld() { cout << "Hello, World" << endl; } 

当你不想把这个函数的名字引入命名空间的作用域时,这是最好的select。

所有这些答案都是正确的,但奇怪的是,这将是有效的:

 struct Hello { static int main() { World(); return 0; } /* note: World() not declared yet */ static void World() { std::cout<<"Hello World"; } }; int main() { return Hello::main(); } 

您必须将该function放在主要function之前。

在C ++中,你需要定义或者至less在调用它们之前声明这些函数。

你到现在为止要做的是这样的:

 int main() { cout << b; int b = 10; } 

所以你也可以这样尝试:

 #include <iostream> using namespace std; void HelloWorld(); int main() { HelloWorld(); return 0; } void HelloWorld() { cout << "Hello, World" << endl; } 

在主函数之前定义所有其他函数是C ++的一个好习惯。

重新排列HelloWorld() ,使其出现在main()之前:

 #include <iostream> using namespace std; void HelloWorld() { cout << "Hello, World" << endl; } int main() { HelloWorld(); return 0; }