我在我的系统的标准C ++库中看到了这一点,以及我正在使用的库中的一些头文件。
这两个定义的语义是什么?除了源本身之外,#define这样的#defines是否有很好的参考?
答案 0 :(得分:45)
__STDC_LIMIT_MACROS
和__STDC_CONSTANT_MACROS
是一种解决方法,允许C ++程序使用C99标准中指定的不在C ++标准中的stdint.h
宏。可以通过其他方式在C ++应用程序中定义诸如UINT8_MAX
,INT64_MIN
和INT32_C()
之类的宏。为了让用户决定他们是否希望定义为C99的宏,许多实现要求在__STDC_LIMIT_MACROS
被包含之前定义__STDC_CONSTANT_MACROS
和stdint.h
。
这不是C ++标准的一部分,但它已被多个实现采用。
答案 1 :(得分:5)
上述问题已经消失。 C99是一个旧标准,因此在C ++ 11标准中明确否定了这一点,因此C11删除了这条规则。
更多细节:
答案 2 :(得分:3)
在C ++下的stdint.h
中,他们会控制是否定义INT32_MAX
或INT32_C(v)
等宏。有关其他信息,请参阅您平台的stdint.h
。
答案 3 :(得分:-6)
宏不是C ++标准的一部分,可能在C ++实现中用于内部目的。如果您想了解更多关于它们的信息,您应该问一个带有atag的问题,该问题表明该实现是什么。