Pourquoi ma fonction HelloWorld n’est-elle pas déclarée dans cette scope?

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

Je reçois l’erreur de compilation suivante avec g ++:

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

Vous devez soit déclarer, soit définir la fonction avant de pouvoir l’utiliser. Sinon, il ne sait pas que HelloWorld() existe en tant que fonction.

Ajoutez ceci avant votre fonction principale:

 void HelloWorld(); 

Alternativement, vous pouvez déplacer la définition de HelloWorld() avant votre main() :

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

Vous devez déclarer la fonction avant de pouvoir l’utiliser:

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

ou vous pouvez déplacer la définition de HelloWorld() avant main()

Vous devez transférer la déclaration HelloWorld() pour que main sache ce que c’est. Ainsi:

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

Vous devez avoir un prototype de la fonction avant l’invocation ou toute la fonction avant celle-ci.

Donc le premier est:

 void HelloWorld(); int main() { HelloWorld(); return 0; } void HelloWorld() { cout << "Hello, World" << endl; } 

Et la deuxième façon est la suivante:

 void HelloWorld() { cout << "Hello, World" << endl; } int main() { HelloWorld(); return 0; } 

Il y a une autre possibilité pour une raison que personne n’a mentionnée, à savoir utiliser la déclaration externe:

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

Il est préférable de ne pas introduire le nom de la fonction dans la scope de l’espace de noms.

Toutes ces réponses sont correctes, mais curieusement, cela aurait fonctionné:

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

Vous devez mettre la fonction avant la fonction principale.

en C ++, vous devez définir ou au moins déclarer les fonctions avant de les appeler.

Ce que vous essayez de faire jusqu’à maintenant, c’est quelque chose comme ceci:

 int main() { cout << b; int b = 10; } 

Donc, vous pouvez aussi essayer comme ceci:

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

Il est recommandé en C ++ de définir toutes les autres fonctions avant la fonction principale.

Réorganiser HelloWorld() pour qu’il apparaisse avant main() :

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