Maison >développement back-end >C++ >Erreur de compilation C++ : le compilateur ne prend pas en charge plusieurs définitions avec des types différents. Comment le résoudre ?
Lors de l'écriture de programmes en C++, nous pouvons rencontrer des erreurs de compilation. L'une des erreurs courantes est "Le compilateur ne prend pas en charge plusieurs définitions de types différents". Cette erreur implique généralement que plusieurs variables ou fonctions soient définies dans différents fichiers ou à différents emplacements dans le même fichier, et que leurs types ne correspondent pas, ce qui empêche le compilateur de déterminer quelle définition utiliser. Cet article expliquera la cause et la solution de cette erreur.
1. Cause de l'erreur
En C++, les variables ou fonctions peuvent être définies dans différents fichiers ou à différents emplacements dans le même fichier. Lorsque plusieurs définitions sont présentes, le compilateur doit déterminer laquelle utiliser. Si plusieurs définitions ont des types différents, le compilateur ne peut pas déterminer quelle définition utiliser et signalera une erreur.
Par exemple, une variable nommée x et une fonction nommée y sont définies dans un programme :
// file1.cpp int x = 1; // file2.cpp double y() { return 2.0; }
Dans cet exemple, le type de x est int et le type de y est double. Lors de la compilation, si file1.cpp et file2.cpp sont inclus en même temps, le compilateur signalera une erreur « Le compilateur ne prend pas en charge plusieurs définitions de types différents ».
2. Solution
Afin de résoudre ce problème, nous devons utiliser le mot-clé extern pour déclarer ces variables ou fonctions afin qu'elles puissent être utilisées dans d'autres fichiers.
Dans file1.cpp, vous devez déclarer la fonction y en utilisant extern afin que le compilateur sache que la fonction y est définie dans un autre fichier et puisse analyser correctement le type de retour de la fonction y. De même, dans file2.cpp, la variable x doit être déclarée en utilisant extern. Le code modifié ressemble à ceci :
// file1.cpp extern double y(); int x = 1; // file2.cpp extern int x; double y() { return 2.0; }
Dans cet exemple, le mot-clé extern est utilisé pour indiquer au compilateur que ces variables ou fonctions sont définies dans d'autres fichiers. De cette façon, au moment de la compilation, le compilateur peut résoudre correctement leurs types, évitant ainsi l'erreur « Le compilateur ne prend pas en charge plusieurs définitions avec des types différents ».
3. Résumé
En C++, lorsque plusieurs définitions apparaissent, si les types définis sont différents, le compilateur signalera une erreur "Le compilateur ne prend pas en charge plusieurs définitions avec des types différents". Pour résoudre ce problème, nous devons déclarer ces variables ou fonctions à l'aide du mot-clé extern afin de pouvoir les utiliser dans d'autres fichiers. De cette façon, au moment de la compilation, le compilateur peut résoudre correctement leurs types, évitant ainsi les erreurs.
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!