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
WBOYoriginal
2023-08-21 23:07:501401parcourir

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;

}

//source2.cpp

include "header.h"

int add(int a, int b){

return a - b;

}

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;

}

//source2.cpp
namespace A{

int num;

}

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!

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