7
votes

Variables de vecteur partagées entre plusieurs fichiers C ++

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;


0 commentaires

3 Réponses :


10
votes

Tout d'abord, vous devez choisir la place où vos vecteurs doivent être définis. Disons que vous choisissez a.cpp .

in a.cpp (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 comme variables globales: xxx

in b.cpp (et dans tous les autres fichiers à partir de laquelle vous souhaitez accéder v1 et v2 ) déclarer vecteurs comme extern . Cela indiquera à la liaison de rechercher ailleurs pour les objets réels: xxx

maintenant, dans l'étape de liaison v1 et v2 V2 à partir de b.cpp sera connecté au V1 et v2 à partir de a.cpp (ou whrerever ces objets sont défini ).


1 commentaires

Mieux vaut mettre la déclaration dans une en-tête incluse dans toutes les unités de compilation , 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.



2
votes

extern 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


0 commentaires

2
votes

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 . xxx


0 commentaires