2 votes

Emplacement C++ du principal

Si je place main en haut du fichier source et que j'invoque des fonctions personnalisées, il me dira que ces fonctions ne sont pas trouvées, mais si je place main en bas du fichier source, cela fonctionnera.

Pourquoi ? Est-ce parce que le compilateur analyse de haut en bas et s'arrête à la définition de main ?

15voto

EboMike Points 39257

Cela n'a rien à voir avec le principal. Les compilateurs C++ fonctionnent de haut en bas, point final.

Tout ce à quoi vous faites référence doit être déclaré au préalable. Il en va de même pour les variables. Dans votre cas, vous pourriez faire

void foo();     // <-- Forward declaration, aka prototype

int main() {
   foo();
}

void foo() {
   // Here is your foo implementation.
}

4voto

En gros, oui. Vous devez définir/déclarer une fonction avant de pouvoir l'utiliser.

0voto

Byron Whitlock Points 29863

Vous devriez placer la signature de vos fonctions dans des fichiers d'en-tête qui sont inclus avant main().

0voto

Eton B. Points 2286

Si main est déclaré avant vos fonctions personnalisées, au moment où main est analysé, il n'a pas "vu" de définitions pour ces fonctions.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X