是否可以在编译时确定实现是否提供精确宽度的整数类型?

是否可以在编译时确定实现是否提供精确宽度的整数类型?示例代码(想要):

#include <stdint.h>

#if HAS_EXACT_WIDTH_INTEGER_TYPES
uint32_t    i;
#else
/* handle the case */
#endif

问题的原因:编写适应性强的代码,如果实现不提供精确宽度的整数类型,则不会导致编译时错误。

回答

C11/C17 7.20p4 :

  1. 对于实现提供的此处描述的每种类型,261)<stdint.h>应声明该 typedef 名称并定义关联的宏。相反,对于实现未提供的此处描述的每种类型<stdint.h>不应声明该typedef名称,也不应定义关联的宏。实现应提供描述为“必需”的那些类型,但不需要提供任何其他类型(描述为“可选”)。

uint32_t存在iff #defined UINT32_MAX等。


以上是是否可以在编译时确定实现是否提供精确宽度的整数类型?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>