Почему моя функция 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
Ответы
Ответ 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;
}