__STDC_LIMIT_MACROS和__STDC_CONSTANT_MACROS是什么意思?

Mat*_*lis 34 c++ macros stl

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

这两个定义的语义是什么?对于像这样的#defines,除了源本身之外还有一个很好的参考吗?

Din*_*ngo 46

__STDC_LIMIT_MACROS并且__STDC_CONSTANT_MACROS是一种解决方法,允许C++程序使用stdint.hC99标准中指定的不在C++标准中的宏.宏,如UINT8_MAX,INT64_MININT32_C()可被已在C++以其他方式应用定义.为了让用户来决定是否要定义为C99确实宏,许多实现要求__STDC_LIMIT_MACROS__STDC_CONSTANT_MACROS之前定义stdint.h是包括在内.

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

  • 不再适用于C11,因此C++ 11. (3认同)

mal*_*lat 5

以上问题已经消失。C99是一个旧标准,因此在C ++ 11标准中已明确推翻了该标准,因此C11删除了此规则。

那里有更多详细信息: