Erreurs de linker en C++ : le piège du extern que j'ai fini par comprendre

Erreurs de linker en C++ : le piège du extern que j'ai fini par comprendre

Debug en direct

Erreurs de linker en C++ : le piège du extern que j'ai fini par comprendre

Il y a des erreurs en C++ qui ne font pas de bruit tant qu'on ne les a pas rencontrées. Les erreurs de linker liées aux variables globales en font partie. Cette semaine, sur mon projet médiathèque, j'y suis passé.

Le symptôme

Le projet est découpé en plusieurs fichiers, un par structure de données. Certaines variables globales sont partagées via un header commun. Au moment de l'édition de liens : une avalanche d'erreurs de symbole dupliqué.

La cause réelle

Écrire une variable globale directement dans un header, sans le mot-clé extern, revient à la définir à chaque inclusion. Résultat : autant de définitions que de fichiers qui incluent ce header.

La solution : déclarer avec extern dans le header, puis définir une seule fois dans un fichier .cpp dédié.

Ce que ça change

Une fois cette distinction appliquée, tout le projet a retrouvé une structure de compilation saine, avec un point de définition unique par variable partagée.

Le projet médiathèque en C++ (zéro bibliothèque, structures faites main, interface Qt) avance chaque semaine sur ma chaîne.

Voir la dernière vidéo →
Abonne-toi pour suivre la suite du projet.

Enregistrer un commentaire

Donne ton avis

Plus récente Plus ancienne