为什么我的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; }