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

Mat*_*Sot 51 c++ scope

#include <iostream>

using namespace std;

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

void HelloWorld()
{
    cout << "Hello, World" << endl;
}
Run Code Online (Sandbox Code Playgroud)

我用g ++得到以下编译错误:

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

Mys*_*ial 87

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

在主要功能之前添加:

void HelloWorld();
Run Code Online (Sandbox Code Playgroud)

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

#include <iostream>
using namespace std;

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

int main()
{
  HelloWorld();
  return 0;
}
Run Code Online (Sandbox Code Playgroud)


Nas*_*ine 19

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

#include <iostream>

using namespace std;

void HelloWorld();

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

void HelloWorld()
{
    cout << "Hello, World" << endl;
}
Run Code Online (Sandbox Code Playgroud)

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

  • @Walter我的解释具体说明了他的问题,而且由于他是新人,所以没有必要为他提供如此多的信息. (14认同)

mat*_*ias 15

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

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


Mor*_*sen 9

您需要在调用之前拥有函数的原型,或者在它之前拥有整个函数.

所以第一个是:

void HelloWorld();

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

void HelloWorld() {
  cout << "Hello, World" << endl;
}
Run Code Online (Sandbox Code Playgroud)

第二种方式是:

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

int main() {
  HelloWorld();
  return 0;
}
Run Code Online (Sandbox Code Playgroud)


Gen*_*yev 8

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

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

当您不希望将函数的名称引入命名空间范围时,它更可取.


Wal*_*ter 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(); } 
Run Code Online (Sandbox Code Playgroud)