为什么我的HelloWorld函数没有在这个作用域中声明?

Why is my HelloWorld function not declared in this scope?

本文关键字:作用域 声明 HelloWorld 我的 函数 为什么      更新时间:2023-10-16
#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()作为一个函数存在。

添加到main函数前:

void HelloWorld();

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

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

你必须在使用这个函数之前声明它:

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

或者您可以将HelloWorld()的定义移到main()之前

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

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

由于某些没有提到的原因,还有一种可能性,即使用外部声明:

#include <iostream>
using namespace std;
int main()
{
  extern void HelloWorld();
  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;
}

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

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

你必须把函数放在main函数之前。

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

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

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

如果你在main函数下面定义你的函数,你应该首先在上面声明它。

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

main()方法上面声明void HelloWorld()或添加函数原型void HelloWorld();,以便编译器可以编译它。如果原型函数不存在,则会出现链接器错误。在这种情况下

  std::cout <<hello<<endl;
  std::string hello = "hello world";