__STDC_LIMIT_MACROS和__STDC_CONSTANT_MACROS是什么意思?

时间:2009-06-12 12:41:53

标签: c++ stl macros

我在我的系统的标准C ++库中看到了这一点,以及我正在使用的库中的一些头文件。

这两个定义的语义是什么?除了源本身之外,#define这样的#defines是否有很好的参考?

4 个答案:

答案 0 :(得分:45)

__STDC_LIMIT_MACROS__STDC_CONSTANT_MACROS是一种解决方法,允许C ++程序使用C99标准中指定的不在C ++标准中的stdint.h宏。可以通过其他方式在C ++应用程序中定义诸如UINT8_MAXINT64_MININT32_C()之类的宏。为了让用户决定他们是否希望定义为C99的宏,许多实现要求在__STDC_LIMIT_MACROS被包含之前定义__STDC_CONSTANT_MACROSstdint.h

这不是C ++标准的一部分,但它已被多个实现采用。

答案 1 :(得分:5)

上述问题已经消失。 C99是一个旧标准,因此在C ++ 11标准中明确否定了这一点,因此C11删除了这条规则。

更多细节:

答案 2 :(得分:3)

在C ++下的stdint.h中,他们会控制是否定义INT32_MAXINT32_C(v)等宏。有关其他信息,请参阅您平台的stdint.h

答案 3 :(得分:-6)

宏不是C ++标准的一部分,可能在C ++实现中用于内部目的。如果您想了解更多关于它们的信息,您应该问一个带有atag的问题,该问题表明该实现是什么。