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