从C99开始,C支持实现定义的扩展整数类型(6.2.5 p7)。是否有任何实现实际上实现了扩展整数类型?
我知道gcc的__int128,目前被视为语言扩展,在gcc的实现定义的行为(J.3.5)文档中并未正式列出为扩展的整数类型。在clang或MSVC的文档中找不到任何提及的内容。Solaris声明没有扩展的整数类型。
在什么是“扩展整数类型”上有一些相关讨论。,但提到的唯一其他候选对象是__int64在旧版本的MSVC中,并且注释似乎同意这不是正式的扩展整数类型,因为该版本的MSVC为C90。
扩展整数类型的示例?
是否有任何实现实际上实现了扩展整数类型?
各种处理器都有 24 位宽度的指令和常量内存。
支持此类 Microchip 处理器的编译器提供
(u)int24_t。
添加到 C99 的 int24_t 类型 现在,当使用 C99 库且 CCI 未激活时,可以使用 int24_t 和 uint24_t 类型(以及现有的 __int24 和 __uint24 类型)。
尽管某些编译器确实提供 128 位整数类型,但如果该类型是扩展整数类型,则 C 库将要求(u)intmax_t至少具有该宽度。C11dr 7.20.1.5
C 还要求“预处理器算术在intmax_t/uintmax_t”中完成。
我怀疑提供intN(N > 64) 的编译器将其作为语言扩展。
我知道不(u)int128_t存在编译器(作为扩展整数类型)。