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 →