2009-06-12 23 views

Respuesta

40

__STDC_LIMIT_MACROS y __STDC_CONSTANT_MACROS son una solución para permitir que los programas C++ usen las macros stdint.h especificadas en el estándar C99 que no están en el estándar C++. Las macros, como UINT8_MAX, INT64_MIN y INT32_C() se pueden definir ya en aplicaciones C++ de otras maneras. Para permitir que el usuario decida si quiere las macros definidas como C99, muchas implementaciones requieren que __STDC_LIMIT_MACROS y __STDC_CONSTANT_MACROS se definan antes de que se incluya stdint.h.

Esto no es parte del estándar C++, pero ha sido adoptado por más de una implementación.

+1

Eso me parece un precedente peligroso de nombres. Esto complica la vida de los estandarizadores: ¿tienen que prestar atención a lo que las implementaciones han hecho con su espacio de nombres? –

+1

ya no se aplica a C11 y, por lo tanto, a C++ 11. – malat

-4

Las macros no son parte del estándar C++ y probablemente se utilicen para fines internos en su implementación C++. Si desea saber más sobre ellos, debe hacer una pregunta con atag que indique cuál es esa implementación.

3

En stdint.h bajo C++, ellos controlan si se definen macros como INT32_MAX o INT32_C(v). Consulte la plataforma stdint.h para obtener información adicional.

Cuestiones relacionadas