在GCC中是否有__int32的对应物?

时间:2014-06-19 13:58:43

标签: c visual-c++ gcc types compiler-construction

我正在编写一个供我自己使用的跨平台库。该库可以在linux内核,NT内核和许多其他环境中使用,因此我不想依赖任何头文件或库,即使它们是标准头文件。因此,我无法使用stdint.h来使用int32_t

如果我使用VC ++,我可以typedef __int32 MY_INT32;,因为__int32是在编译器中构建的。

GCC中是否有__int32的对应物?

我目前的做法是:

typedef signed char        KTL_INT8;
typedef signed short       KTL_INT16;
typedef signed int         KTL_INT32;
typedef signed long long   KTL_INT64;
typedef unsigned char      KTL_UINT8;
typedef unsigned short     KTL_UINT16;
typedef unsigned int       KTL_UINT32;
typedef unsigned long long KTL_UINT64;

static_assert(1 == sizeof(KTL_INT8),  "sizeof(KTL_INT8) != 1");
static_assert(2 == sizeof(KTL_INT16), "sizeof(KTL_INT16) != 2");
static_assert(4 == sizeof(KTL_INT32), "sizeof(KTL_INT32) != 4");
static_assert(8 == sizeof(KTL_INT64), "sizeof(KTL_INT64) != 8");

2 个答案:

答案 0 :(得分:0)

我不这么认为,不。

我查看GCC's extensions documentation但除了__int128之外没有找到任何其他内容。

答案 1 :(得分:0)

这可能会因GCC版本而异,但在最近的几个版本中我已经检查过你了

#include <stdint-gcc.h>

这是您在/usr/lib/gcc/<target>/<version>/include/中找到的生成文件(其中主机和版本将特定于您的GCC。它似乎使用__INT32_TYPE__形式的宏来表示类型本身。< / p>

(我怀疑这些被定义为从机器描述文件映射到GCC内部类型系统的属性,但是自从我使用GCC源代码以来已经太长了。)