不保证在32位平台上定义类型uint64_t
,并且像
int main() {
uint64_t i = 0;
}
可能会导致incomplete type
类型的编译错误。
是否有预处理程序指令来检查uint64_t
是否存在?用于检查类型是否已定义的任何其他方式?
答案 0 :(得分:8)
我认为合理的方法是检查是否定义了关联的宏UINT64_MAX
,例如
#include <cstdint> /* don't forget to include */
...
#ifdef UINT64_MAX
...
#endif
AFAIK如果定义了某种类型的同义词,您无法直接检查。根据C99,7.18.2指定宽度整数类型的限制(不要有C ++标准的副本来确认,强调我的):
以下类似对象的宏指定最小值和最大值
<stdint.h>
中声明类型的限制。每个宏名称 对应于7.18.1中类似的类型名称。