Maison  >  Article  >  développement back-end  >  Comment résoudre l'erreur de compilation C++ : « référence non définie à « fonction » ?

Comment résoudre l'erreur de compilation C++ : « référence non définie à « fonction » ?

WBOY
WBOYoriginal
2023-08-27 08:15:411621parcourir

解决C++编译错误:'undefined reference to 'function'',如何解决?

Résoudre l'erreur de compilation C++ : 'référence non définie à 'fonction', comment la résoudre ?

1. Description du problème
Dans le processus de programmation en C++, nous rencontrons souvent des erreurs de compilation. L'une des erreurs courantes est "référence non définie à 'fonction'". Cette erreur se produit généralement pendant la phase de liaison, lorsque le compilateur ne trouve pas la définition de la fonction, ce qui entraîne l'échec de la compilation.

2. Cause de l'erreur

  1. Définition de fonction manquante : Il se peut que la définition de fonction ne soit pas fournie dans le programme, ou que la définition de fonction ne soit pas correctement incluse dans le programme.
  2. Erreur de déclaration de fonction : la déclaration de la fonction est incohérente avec sa définition réelle, ou la fonction est déclarée au mauvais endroit.

3. Solution
Pour les raisons d'erreur ci-dessus, voici plusieurs solutions courantes.

  1. Définition de fonction manquante
    Pour cette situation, la solution est simple, il suffit de fournir la définition de la fonction à l'endroit approprié dans le programme. Supposons que nous ayons la déclaration de fonction suivante :
// function.h
int sum(int a, int b);
// main.cpp
#include "function.h"

int main() {
    int result = sum(1, 2);
    return 0;
}

Dans le code ci-dessus, nous fournissons uniquement la déclaration de fonction, mais pas la définition de la fonction. Pour résoudre ce problème, nous devons fournir la définition de la fonction à l'endroit approprié :

// function.cpp
int sum(int a, int b) {
    return a + b;
}

De cette façon, au moment de la compilation, le compilateur peut trouver la définition réelle de la fonction, résolvant ainsi la "référence non définie à 'fonction' " erreur.

  1. Erreur de déclaration de fonction
    Pour les erreurs de déclaration de fonction, cela peut être dû à l'incohérence entre la déclaration de la fonction et sa définition réelle. La façon de résoudre ce problème est de vérifier si la déclaration et la définition de la fonction sont cohérentes, y compris les types de paramètres, le nombre de paramètres, la valeur de retour de la fonction, etc.

Considérez l'exemple de code suivant :

// function.h
float sum(int a, int b); // 函数声明
// function.cpp
int sum(int a, int b) { // 函数定义
    return a + b;
}

Dans le code ci-dessus, la déclaration et les types de valeur de retour définis de la fonction sont incohérents, l'un est déclaré comme type float et l'autre est défini comme type int. Cela empêchera le compilateur de faire correspondre correctement la référence et la définition de la fonction, ce qui entraînera une erreur « référence non définie à « fonction » ».

Afin de résoudre ce problème, il suffit de garder la déclaration de la fonction cohérente avec le type de valeur de retour défini :

// function.h
int sum(int a, int b); // 函数声明
// function.cpp
int sum(int a, int b) { // 函数定义
    return a + b;
}

De cette façon, le compilateur peut faire correspondre correctement la référence et la définition de la fonction, résolvant ainsi le problème d'erreur "référence non définie à 'fonction'".

4. Résumé
En programmation C++, les erreurs de compilation ne nous sont pas étrangères. L'une des erreurs courantes est "référence non définie à 'fonction'", ce qui signifie qu'une référence à une fonction n'a pas de définition trouvée. Pour résoudre ce problème, nous devons faire attention à savoir si la définition de la fonction est fournie et si la déclaration de la fonction est cohérente avec sa définition. Ce problème peut être facilement résolu en fournissant correctement la définition de la fonction et en gardant la déclaration de fonction cohérente avec la définition.

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!

Déclaration:
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