以下代码是否合法?
struct BigInt {
uint64_t a : 128;
};
答案 0 :(得分:3)
位域必须适合单个int
,因此除非int
在您的平台上为128位,否则您将失去运气。
(您在编辑前的;
末尾也错过了struct
。
答案 1 :(得分:-1)
在标准C11中不合法(在大多数平台上;原则上,int
可能是128位,但我从未遇到过具有该功能的平台)。阅读n1570(草案规范)。
但是在某些平台上最近的编译器(例如GCC 6)提供了__int128
as an extension。你不会将它用作位域,而是用作某种整数类型。
另请参阅this相关问题的答案。