Maison >développement back-end >C++ >Pourquoi est-ce que j'obtiens l'erreur LNK2005 : plusieurs définitions de \'k\' dans mon application console Win32 ?

Pourquoi est-ce que j'obtiens l'erreur LNK2005 : plusieurs définitions de \'k\' dans mon application console Win32 ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-01 00:19:28511parcourir

Why Am I Getting Error LNK2005: Multiple Definitions of 'k' in My Win32 Console Application?

Erreur LNK2005 : définitions multiples de 'k'

Lors du développement d'une application console Win32 avec plusieurs fichiers source C, vous pouvez rencontrer l'erreur LNK2005 , indiquant qu'une variable a été définie plusieurs fois.

Cause de l'erreur

Dans le code donné, A.cpp et B.cpp définissent une variable globale nommé « k ». Cela viole la règle de définition C one, qui stipule que chaque symbole (fonction, variable, etc.) ne doit être défini qu'une seule fois dans un programme.

Résoudre le problème

Il existe plusieurs façons de résoudre cette erreur :

1. Utilisation d'un espace de noms sans nom (pour les variables nécessaires dans plusieurs fichiers)

Si vous avez besoin de la même variable dans les deux fichiers cpp, utilisez un espace de noms sans nom pour éviter plusieurs définitions :

<code class="cpp">namespace
{
    int k;
}</code>

2. Utilisation de « extern » (pour les variables partagées entre fichiers)

Si vous devez partager une variable sur plusieurs fichiers, déclarez la variable comme « extern » dans le fichier d'en-tête et définissez-la dans un seul fichier cpp. :

<code class="cpp">// A.h
extern int k;

// A.cpp
int k = 0;

// B.cpp
#include "A.h"

// Use `k` anywhere in B.cpp</code>

En suivant ces approches, vous pouvez résoudre l'erreur LNK2005 et vous assurer que chaque symbole n'est défini qu'une seule fois dans votre programme.

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