什么gcc版本支持__int128内在类型?

Pee*_*oot 16 gcc

gcc docs下,128位整数是:

作为扩展,整数标量类型__int128支持具有足够容纳128位的整数模式的目标.只需写入__int128带符号的128位整数,或写入unsigned __int128无符号的128位整数.

GCC中不支持表示__int128长整数小于128位宽的目标的类型的整数常量.

我想知道什么gcc版本增加了对这种类型的支持,或者如果有,可以直接用来测试其存在的宏.

Bre*_*ale 12

不确定第一个版本,但您可以测试__SIZEOF_INT128__宏 - 16如果定义的话(通常).


Cir*_*四事件 7

获取来源和:

git log --reverse --grep='__int128'
Run Code Online (Sandbox Code Playgroud)

查看提交消息中第一次出现的单词.

这导致我们:https://github.com/gcc-mirror/gcc/commit/6388cfe24f7ecbdc2ba2d4c80638ea6c95ba07c2,其中说:

Add __int128 keyword.
Run Code Online (Sandbox Code Playgroud)

然后列出包含该提交的所有标记:

git tag --contains 6388cfe24f7ecbdc2ba2d4c80638ea6c95ba07c2
Run Code Online (Sandbox Code Playgroud)

最早的一个是:

gcc-4_6_0-release
Run Code Online (Sandbox Code Playgroud)

TODO:还有一个__int128_t我不明白的早期参考文献.__int128和之间有什么区别_int128_t

  • 通常,_t后缀表示typedef,__前缀表示为编译器保留,_前缀表示为标准库保留; 我猜__int128是编译器支持的最终本机类型,而_int128_t是他们离开的临时hack. (6认同)