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

Erreur de compilation C++ : le compilateur ne prend pas en charge plusieurs définitions avec des types différents. Comment le résoudre ?

王林
Libérer: 2023-08-22 11:03:32
original
1638 Les gens l'ont consulté

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; }
Copier après la connexion

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; }
Copier après la connexion

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!

É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