【发布时间】:2019-08-02 19:08:33
【问题描述】:
从 C99 开始,C 支持实现定义的扩展整数类型 (6.2.5 p7)。是否有任何实现实际上实现了扩展整数类型?
我知道 gcc 的 __int128,它目前被视为一种语言扩展,并且在 gcc 的实现定义行为文档 (J.3.5) 中没有正式列为扩展整数类型。我在 clang 或 MSVC 的文档中找不到任何内容。 Solaris 声明没有扩展整数类型。
What are “extended integer types”? 有一些相关的讨论,但唯一提到的其他候选者是旧版本的 MSVC 中的__int64,并且由于 MSVC 的版本,cmets 似乎同意它不是正式的扩展整数类型是C90。
【问题讨论】:
-
或许int24_t?
-
很好奇。 GCC 手册确实说
__int128仅在具有足够宽整数模式的平台上可用。事实上,它在不是标准整数类型之一的别名的任何地方都可用(大概是long long int)? -
@chux 请回答。
-
@JohnBollinger gcc (Ubuntu 8.3.0-6ubuntu1) 具有 64 位
long、long long和intmax_t,并在 Ubuntu 19.04 VM 中提供__int128。 -
GCC 中的
__int128不是 C 标准意义上的“扩展整数类型”。让我查一下 GCC 开发人员的引言……但对于其中之一,它比 x86-64 上的intmax_t更宽,这是普通扩展整数类型所不能做到的。
标签: c