web-dev-qa-db-ja.com

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
51
MatthewSot

関数を使用する前に、宣言または定義する必要があります。そうでなければ、HelloWorld()が関数として存在することを知りません。

これをメイン関数の前に追加します。

_void HelloWorld();
_

または、HelloWorld()の前にmain()の定義を移動できます。

_#include <iostream>
using namespace std;

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

int main()
{
  HelloWorld();
  return 0;
}
_
87
Mysticial

関数を使用する前に宣言する必要があります。

_#include <iostream>

using namespace std;

void HelloWorld();

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

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

または、HelloWorld()の前にmain()の定義を移動できます

19
Nasreddine

HelloWorld()を前方宣言する必要があるので、mainはそれが何であるかを知っています。そのようです:

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

呼び出しの前に関数のプロトタイプを作成するか、関数の前に関数全体を作成する必要があります。

だから最初は:

void HelloWorld();

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

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

2番目の方法は次のとおりです。

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

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

誰も言及していない何らかの理由、すなわちextern宣言を使用することで、もう1つの可能性があります。

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

関数の名前を名前空間に導入したくない場合に適しています。

8
Gene Bushuyev

これらの答えはすべて正しいですが、奇妙なことに、これはうまくいきました:

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

メイン関数の前に関数を配置する必要があります。

4
Tusk

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++では、メイン関数の前に他のすべての関数を定義することをお勧めします。

3
gprathour

HelloWorld()の前に現れるようにmain()を再配置します:

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