Подтвердить что ты не робот

Почему моя функция 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
4b9b3361

Ответ 1

Вам нужно либо объявить, либо определить функцию, прежде чем вы сможете ее использовать. В противном случае он не знает, что HelloWorld() существует как функция.

Добавьте это перед вашей основной функцией:

void HelloWorld();

В качестве альтернативы вы можете переместить определение HelloWorld() перед тем, как main():

#include <iostream>
using namespace std;

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

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

Ответ 2

Вы должны объявить эту функцию, прежде чем сможете ее использовать:

#include <iostream>

using namespace std;

void HelloWorld();

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

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

или вы можете переместить определение HelloWorld() до main()

Ответ 3

Вам нужно переслать declare HelloWorld(), поэтому main знает, что это такое. Например:

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

Ответ 4

Перед этим вам нужно либо прототип функции перед вызовом, либо целую функцию.

Итак, первое:

void HelloWorld();

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

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

И второй способ:

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

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

Ответ 5

Есть еще одна возможность, по какой-то причине никто не упоминал, а именно использование выражения extern:

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

Это предпочтительнее, если вы не хотите вводить имя функции в область пространства имен.

Ответ 6

Все эти ответы верны, но, как ни странно, это сработало бы:

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

Ответ 7

Вы должны поставить функцию перед основной функцией.

Ответ 8

в С++ вам нужно определить или хотя бы объявить функции перед их вызовом.

То, что вы пытаетесь сделать до сих пор, выглядит примерно так:

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

Хорошая практика в С++ для определения всех других функций перед основной функцией.

Ответ 9

Переупорядочиваем HelloWorld() так, чтобы он отображался перед main():

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