【发布时间】:2013-05-10 23:01:58
【问题描述】:
C 标准和 C 编译器带有固定宽度的整数类型,例如 uint8_t、int16_t 等。
有没有一种方法可以在 C 中定义一个 128 位整数,该方法可以在代码中使用与现有固定宽度整数相同的语义?
【问题讨论】:
-
没有运算符重载到 C 中的自定义类型,所以不是真的。您将需要调用 add()、subtract() 等函数。
-
如果您想要一些行为类似于内置类型但实际上是具有自定义行为的特殊类型,您最好使用 C++ 对象。您可以轻松地创建一个具有标准整数类语义且在 128 位中工作的 C++ 对象。
-
我正在开发纯 C 代码库。
-
您可能想检查您的 GCC 编译器是否支持
__int128_t和__uint128_t。见How to printuint128_tnumber using GCC