为什么我的HelloWorld函数未在此范围内声明?

时间:2011-11-22 22:05:06

标签: c++ scope

#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

10 个答案:

答案 0 :(得分:85)

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

在主要功能之前添加:

void HelloWorld();

或者,您可以在HelloWorld()

之前移动main()的定义
#include <iostream>
using namespace std;

void HelloWorld()
{
  cout << "Hello, World" << endl;
}

int main()
{
  HelloWorld();
  return 0;
}

答案 1 :(得分:19)

您必须先声明该功能才能使用它:

#include <iostream>

using namespace std;

void HelloWorld();

int main()
{
    HelloWorld();
    return 0;
}

void HelloWorld()
{
    cout << "Hello, World" << endl;
}

或者您可以在HelloWorld()

之前移动main()的定义

答案 2 :(得分:15)

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

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

答案 3 :(得分:9)

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

所以第一个是:

void HelloWorld();

int main() {
  HelloWorld();
  return 0;
}

void HelloWorld() {
  cout << "Hello, World" << endl;
}

第二种方式是:

void HelloWorld() {
  cout << "Hello, World" << endl;
}

int main() {
  HelloWorld();
  return 0;
}

答案 4 :(得分:8)

由于某些原因,还有一种可能性,即使用extern声明:

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

当您不希望将函数名称引入命名空间范围时,最好。

答案 5 :(得分:5)

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

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(); } 

答案 6 :(得分:4)

你必须把功能放在主功能之前。

答案 7 :(得分:3)

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

到目前为止你要做的事情是这样的:

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 ++中,在main函数之前定义所有其他函数是一种很好的做法。

答案 8 :(得分:2)

重新排列HelloWorld(),使其显示在main()之前:

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

答案 9 :(得分:1)

如果要定义要在主要功能下运行,则应首先在主要功能下声明。

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