Je veux partager (globaliser) des variables vectorielles (V1 et V2) entre deux fichiers CPP (A.CPP et B.CPP). J'ai déjà défini à la fois V1 et V2 dans A.H par les commandes suivantes.
extern vector<uint64_t> V1; extern vector<uint64_t> V2;
3 Réponses :
Tout d'abord, vous devez choisir la place où vos vecteurs doivent être définis. Disons que vous choisissez in in maintenant, dans l'étape de liaison a.cpp code>.
a.cpp code> (uniquement dans un fichier - définir le même objet dans plusieurs fichiers donnera plusieurs types de symboles définis) < forte> définir des vecteurs strong> comme variables globales: p>
b.cpp code> (et dans tous les autres fichiers à partir de laquelle vous souhaitez accéder
v1 code> et
v2 code>) déclarer strong> vecteurs comme
extern code>. Cela indiquera à la liaison de rechercher ailleurs pour les objets réels: p>
v1 code> et
v2 code> V2 code> à partir de
b.cpp code> sera connecté au
V1 code> et
v2 code> à partir de
a.cpp code> (ou whrerever ces objets sont défini fort>). p> p>
Mieux vaut mettre la déclaration dans une en-tête incluse dans toutes les unités de compilation i>, y compris celui qui contient les définitions. De cette façon, le compilateur peut vérifier que la définition et les déclarations correspondent.
extern code> signifie que cela ne déclare que les variables, elle ne les définit pas. Vous avez besoin d'une définition exacte de ces variables quelque part dans certains fichiers source (pas d'en-tête). La définition ressemble exactement à la déclaration sans le
extern code> p>
Vous avez créé une déclaration dans votre fichier d'en-tête; Maintenant, vous devez créer la définition dans une seule unité de compilation (fichier .cpp).
Alors choisissez un fichier .cpp et mettez la définition là-bas. Dans ce cas, la définition est la même que la déclaration, sauf sans le mot clé extern code>. P>