|
1
58
对于C23之前的GCC,基元128位整数类型为 仅在64位目标上可用 ,因此,即使您已经检测到最新的GCC版本,也需要检查可用性。理论上的gcc 能够 在需要4个32位寄存器才能保存一个的机器上支持TImode整数,但我认为在任何情况下都不支持。
在C++中,考虑一个库,例如
ISO C23会让你
GCC 4.6及更高版本具有
GCC 4.1及以后的定义
我测试过 on the Godbolt compiler explorer 编译器的第一个版本支持这三种功能中的每一种(在x86-64上)。Godbolt只回到gcc4.1、ICC13和clang3.0,所以我使用了<=4.1,以表明实际的第一次支持可能更早。
如果您为32位体系结构(如ARM或x86)进行编译
据我所知,用于检测它的唯一直接CPP宏是
有些人仍然使用古老的编译器版本,如RHEL(RedHat Enterprise Linux)上的gcc4.4,或类似的顽固的旧系统。如果你关心这样过时的gcc版本,你可能想坚持
可能有一些64位ISAs中gcc没有定义
GCC内部为整数TI模式(
GCC internals manual
). (四进制整数=32位宽度的4倍
手册中有一个OI模式,oct int=32字节,但x86-64的当前GCC抱怨说,如果您尝试使用它,“无法模拟‘OI’”。
随机事实:ICC19和g++/clang++
@MarcGlisse评论道 这就是告诉libstdc++处理额外整数类型(重载abs、特殊化类型traits等)的方法
测试功能为:
支持这一切的编译器高效地编译它
|
|
2
34
啊,大整数不是C的强项。
GCC确实有
这些仅在64位目标上可用。
(编者按:这个答案曾经声称gcc定义了
|
|
|
3
17
您可以使用一个处理任意或大精度值的库,例如 GNU MP Bignum Library . |