便携式检查非便携式整体类型的存在方式

时间:2011-12-07 21:35:34

标签: c++

我希望通过int64_t为我的int获利,当存在于c ++ 98或更高版本的实现中时(我知道C ++ 11已经提供了64位int)。 是否有一种可移植的通用方法来检查int64_t的存在,或者 - 甚至更好 - 可用的任何64位或更大的整数类型,如:

#ifdef has_int64_t
typedef int64_t myint
#else
typedef int myint
#endif

//...code
myint a;

如果可能,检查应适用于c ++ 98,c ++ 03和c ++ 11。

2 个答案:

答案 0 :(得分:0)

非常确定这应该可以使用stdint.h:

#ifdef INT64_C
//...
#else
//...
#endif

答案 1 :(得分:0)

stdint.h和C ++ 11 cstdint标题的情况相当棘手。特别是因为它们在某些VS版本上缺失。最简单的路线肯定是boost stdint