Problème des #ifndef dans les en-têtes.
Bonjour,
Ce n'est pas uniquement un problème de C++ mais comme je compile avec g++, je me permet de poster ici.
J'ai récemment bloqué sur un petit problème pendant pas mal de temps :
L'un de mes header portait le même nom ( Semaphore.h) qu'un header de la librairie standard du C qu'il incluait (semaphore.h).
Ainsi SEMAPHORE_H était défini et le contenu de semaphore.h était vide.
Que faire dans ce cas là?
Je pourrais certes changer le define SEMAPHORE_H dans mon header par define SEMAPHORE_H2.
Mais si je ne peux pas modifier le define ? Par exemple si j'inclus deux bibliothèques, chacune ayant respectivement un fichier init.h et Init.h.
Comment éviter ce type de problème ?
Un header d'une bibliothèque que j'utilise peut très bien inclure un header portant le même nom qu'un autre de mes header et là ça sera beaucoup plus dur de trouver l'origine du problème.
EDIT : J'ai regardé un peu trop vite, ils définissent _SEMAPHORE_H.
Mais la question reste entière pour deux bibliothèques ayant deux fichiers de même noms.
Pour les curieux, mon problème venait de QtCreator qui incluait mon propre semaphore.h...