在C中,你可以有一个128位的位域

时间:2016-12-21 16:25:15

标签: c int

以下代码是否合法?

struct BigInt {
     uint64_t a : 128;
};

2 个答案:

答案 0 :(得分:3)

位域必须适合单个int,因此除非int在您的平台上为128位,否则您将失去运气。

(您在编辑前的;末尾也错过了struct

答案 1 :(得分:-1)

在标准C11中不合法(在大多数平台上;原则上,int可能是128位,但我从未遇到过具有该功能的平台)。阅读n1570(草案规范)。

但是在某些平台上最近的编译器(例如GCC 6)提供了__int128 as an extension。你不会将它用作位域,而是用作某种整数类型。

另请参阅this相关问题的答案。