2009-06-12 7 views

Répondre

40

__STDC_LIMIT_MACROS et __STDC_CONSTANT_MACROS sont une solution de contournement pour permettre aux programmes C++ utiliser stdint.h macros spécifiées dans la norme C99 qui ne sont pas dans la norme C++. Les macros, telles que UINT8_MAX, INT64_MIN et INT32_C() peuvent déjà être définies dans les applications C++ d'autres manières. Pour permettre à l'utilisateur de décider s'il veut que les macros définies comme C99 le fassent, de nombreuses implémentations requièrent que __STDC_LIMIT_MACROS et __STDC_CONSTANT_MACROS soient définies avant d'inclure stdint.h.

Cela ne fait pas partie du standard C++, mais il a été adopté par plusieurs implémentations.

+1

Cela me frappe comme un précédent dangereux de nommage. Cela complique la vie des normalisateurs - doivent-ils faire attention à ce que les implémentations ont fait avec leur espace de noms. –

+1

ne s'applique plus à C11 et donc C++ 11. – malat

-4

Les macros ne font pas partie de la norme C++ et sont probablement utilisées à des fins internes dans votre implémentation C++. Si vous voulez en savoir plus à leur sujet, vous devriez poser une question avec atag qui indique ce qu'est cette implémentation.

3

Sous stdint.h sous C++, ils contrôlent la définition de macros telles que INT32_MAX ou INT32_C(v). Pour plus d'informations, consultez la page stdint.h de votre plateforme.

Questions connexes