Maison > développement back-end > C++ > le corps du texte

Résoudre l'erreur de compilation C++ : la « fonction » n'a pas été déclarée dans cette portée

WBOY
Libérer: 2023-08-27 08:51:15
original
1582 Les gens l'ont consulté

解决C++编译错误:'function' was not declared in this scope

Résoudre les erreurs de compilation C++ : la « fonction » n'a pas été déclarée dans cette portée

Lors de la programmation en C++, nous rencontrons souvent des erreurs de compilation. L'une des erreurs courantes est « « la fonction » n'a pas été déclarée dans cette portée ». Cette erreur signifie que le programme a tenté d'utiliser une fonction non déclarée. Dans cet article, je vais expliquer la cause de cette erreur et proposer quelques solutions.

Tout d'abord, regardons un exemple de code simple :

#include <iostream>

int main() {
    sayHello(); // 调用一个未声明的函数
    return 0;
}

void sayHello() {
    std::cout << "Hello, World!" << std::endl;
}
Copier après la connexion

Lorsque nous essayons de compiler ce code, le compilateur signalera une erreur et affichera "'sayHello' n'a pas été déclaré dans cette portée". C'est parce que nous avons appelé une fonction non déclarée sayHello dans la fonction principale.

La raison pour laquelle cette erreur se produit est que le compilateur analyse le code dans l'ordre descendant. Avant d'appeler la fonction sayHello, le compilateur ne connaît pas l'existence de cette fonction, donc une erreur sera signalée.

Pour résoudre cette erreur, nous devons déclarer la fonction sayHello avant la fonction principale. Vous pouvez ajouter un prototype de fonction avant la fonction principale :

#include <iostream>

void sayHello(); // 函数原型

int main() {
    sayHello(); // 调用函数
    return 0;
}

void sayHello() {
    std::cout << "Hello, World!" << std::endl;
}
Copier après la connexion

Dans le code ci-dessus, nous avons ajouté le prototype de fonction avant la fonction principale void sayHello();. Ce prototype de fonction indique au compilateur qu'il existe une fonction appelée sayHello avant la fonction principale. Son type de retour est vide et n'a aucun paramètre.

Maintenant que le compilateur connaît l'existence de la fonction sayHello, on peut l'appeler dans la fonction main. Recompilez le code. Cette fois, l'erreur "'sayHello' n'a pas été déclaré dans cette portée" ne devrait plus apparaître.

En plus d'ajouter un prototype de fonction, une autre façon de résoudre cette erreur consiste à déplacer la définition de la fonction avant la fonction principale. De cette façon, le compilateur verra la définition de la fonction avant de compiler la fonction principale.

#include <iostream>

void sayHello() {
    std::cout << "Hello, World!" << std::endl;
}

int main() {
    sayHello(); // 调用函数
    return 0;
}
Copier après la connexion

Dans le code ci-dessus, nous avons déplacé la définition de la fonction avant la fonction principale, afin que le compilateur voie la définition de la fonction sayHello en premier et ne signale plus d'erreur.

Pour résumer, lorsque l'erreur "'fonction' n'a pas été déclarée dans cette portée" se produit, nous devons déclarer ou définir la fonction avant de l'appeler. Cette erreur peut être résolue en ajoutant un prototype de fonction ou en déplaçant la définition de la fonction avant d'appeler la fonction. De cette façon, le compilateur connaîtra l’existence de la fonction et ne signalera pas d’erreur. J'espère que cet article sera utile pour résoudre les erreurs de compilation C++.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal