GCC 中是否有 __int32 的对应项? [重复]

问题描述 投票:0回答:2

我正在编写一个供我自己使用的跨平台库。该库可以在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");
c gcc visual-c++ types
2个回答
1
投票

我不这么认为,不。

我查看了GCC的扩展文档,但除了

__int128
之外没有找到任何内容。


1
投票

这可能会因 GCC 版本而异,但在最近的几次检查中,您会发现

#include <stdint-gcc.h>

这是一个生成的文件,您可以在

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

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

© www.soinside.com 2019 - 2024. All rights reserved.