Maison > développement back-end > C++ > Erreur de compilation C++ : plusieurs définitions, comment les modifier ?

Erreur de compilation C++ : plusieurs définitions, comment les modifier ?

WBOY
Libérer: 2023-08-21 23:07:50
original
1373 Les gens l'ont consulté

En programmation C++, des erreurs de compilation à « définitions multiples » se produisent souvent. En effet, plusieurs variables, fonctions ou objets portant le même nom sont définis dans le programme. Ces variables, fonctions ou objets sont tous considérés comme identiques par le compilateur, celui-ci générera donc une erreur de « définition multiple ».

Dans la programmation réelle, comment devrions-nous éviter et résoudre de tels problèmes ?

  1. Utiliser des fichiers d'en-tête

En C++, nous pouvons définir certaines fonctions ou variables réutilisées dans les fichiers d'en-tête, afin d'éviter de définir à plusieurs reprises la même fonction ou variable dans plusieurs fichiers. Lors de l'utilisation de ces fonctions ou variables, il suffit d'inclure le fichier d'en-tête.

Exemple de code :

//header.h

ifndef HEADER_H

define HEADER_H

int add(int a, int b);

endif

//source1.cpp

include "header.h"

int add(int a, int b){

return a + b;
Copier après la connexion

}

//source2.cpp

include "header.h"

int add(int a, int b){

return a - b;
Copier après la connexion

}

at Dans cet exemple de code, nous définissons un fichier d'en-tête "header.h" et une fonction "add" dedans. Dans les deux fichiers sources "source1.cpp" et "source2.cpp", nous définissons respectivement l'implémentation de la fonction "add". Lorsque nous compilerons ces deux fichiers sources, le compilateur fera pointer l'appel de la fonction "add" vers la définition dans le fichier d'en-tête, évitant ainsi l'erreur "définition multiple".

  1. Utilisation du mot-clé static

En C++, nous pouvons utiliser le mot-clé "static" pour marquer une variable ou une fonction comme "static" afin d'éviter les définitions en double dans plusieurs fichiers.

Exemple de code :

//source1.cpp
static int num;

//source2.cpp
static int num;

Dans cet exemple de code, nous définissons une variable statique dans deux fichiers sources respectivement "num". Grâce au mot-clé "static", le compilateur traitera ces deux variables comme deux variables différentes sans provoquer l'erreur "définition multiple".

  1. Utiliser des espaces de noms

En C++, nous pouvons utiliser des espaces de noms pour éviter les définitions répétées de variables, de fonctions ou d'objets.

Exemple de code :

//source1.cpp
namespace A{

int num;
Copier après la connexion
Copier après la connexion

}

//source2.cpp
namespace A{

int num;
Copier après la connexion
Copier après la connexion

}

Dans cet exemple de code, nous sommes dans deux fichiers sources identiques L'espace de noms "A" est défini et la même variable "num" est définie dans cet espace de noms. Étant donné que l'espace de noms résout le problème des conflits de noms, le compilateur ne signalera pas d'erreur de « définition multiple ».

Pour résumer, nous pouvons éviter les définitions répétées de variables, de fonctions ou d'objets en utilisant des fichiers d'en-tête, des mots-clés statiques et des espaces de noms. Dans le développement réel, nous devons choisir la méthode appropriée en fonction des besoins et respecter certaines normes de codage, afin de réduire autant que possible les erreurs de compilation et le temps de débogage.

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!

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