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

Pourquoi est-ce que j'obtiens l'erreur « Erreur LNK2005 : déjà défini ? » lorsque je définis la même variable dans plusieurs fichiers C ?

Patricia Arquette
Libérer: 2024-10-30 01:43:29
original
760 Les gens l'ont consulté

Why am I getting the

Erreur : "erreur LNK2005 : déjà définie ?"

Dans votre application console, vous avez rencontré une erreur inattendue lors de la compilation des fichiers A.cpp et B.cpp . Les deux fichiers contiennent le code suivant :

#include "stdafx.h"
int k;
Copier après la connexion

Cependant, le processus de compilation génère une erreur :

Error 1 error LNK2005: "int k" (?a@@3HA) already defined in A.obj
Copier après la connexion

Cette erreur provient de la violation de la « règle d'une définition ». En C , chaque variable, fonction et objet ne peut être défini qu'une seule fois. Dans votre cas, vous avez défini la variable "k" dans A.cpp et B.cpp.

Solutions

Utilisation d'un espace de noms sans nom

Si vous le souhaitez pour utiliser la même variable nommée dans les deux fichiers, vous pouvez utiliser un espace de noms sans nom (espace de noms anonyme) pour éviter le conflit.

namespace
{
    int k;
}
Copier après la connexion

En encapsulant "k" dans un espace de noms, vous limitez efficacement sa portée au fichiers respectifs, évitant ainsi l'erreur de définition.

Utilisation de la déclaration externe

Si vous avez l'intention de partager la variable "k" sur plusieurs fichiers, vous pouvez utiliser la technique de déclaration et de définition externes :

A.h (fichier d'en-tête)

extern int k;
Copier après la connexion

A.cpp

#include "A.h"
int k = 0;
Copier après la connexion

B.cpp

#include "A.h"

// Use 'k' variable as needed
Copier après la connexion

Dans ce scénario, vous déclarez une variable comme externe dans A.h et la définissez dans A.cpp. Le fichier B.cpp n'a besoin que d'inclure A.h pour accéder à la variable, évitant ainsi le conflit de 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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!