我正在编写一个供我自己使用的跨平台库。该库可以在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");