En C/C++, est-il une directive similaire à #ifndef pour les typedefs?

Si je veux définir une valeur uniquement si elle n'est pas définie, je fais quelque chose comme ceci :

#ifndef THING
#define THING OTHER_THING
#endif

Que si THING est un typedef'd identificateur, et n'est pas définie? Je voudrais faire quelque chose comme ceci:

#ifntypedef thing_type
typedef uint32_t thing_type
#endif

La question se pose parce que je voulais vérifier pour voir si une bibliothèque externe qui a déjà défini les boolean type, mais je préfère être à l'écoute de plus de solution générale.

  • non, il n'est pas
  • ... (s'ajoutant à @Ali Veli commentaire) et que vous ne voulez pas qu'il soit.
  • Juste pour votre information, si votre compilateur MSVC, __if_not_exists est disponible en C++. Par exemple, un code comme celui - __if_not_exists( thing_type ) { typedef uint32_t thing_type; } est possible.
  • En C11 et C++ vous êtes autorisé à re-définition de type d'un typedef pour la même chose
InformationsquelleAutor Zach Rattner | 2011-07-21