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 ?
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!