本文介绍了结构位域最大尺寸(C99,C ++)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

什么是位结构领域最大位宽?

What is maximal bit width for bit struct field?

struct i { long long i:127;}

我可以定义一个位域里面结构,与位域高达128位或256位,或更大尺寸?还有一些超宽载体类型,如SSE2(128位),avx1 / AVX2(256位),AVX-512(512位为下至强公共卫生机构)登记;同时也扩展如在海湾合作委员会。

推荐答案

C99§6.7.2.1,第3段:

C99 §6.7.2.1, paragraph 3:

这位前pression指定
  位字段宽度应为
  有整型常量前pression
  该非负值不得
  超过在对象比特数
  即,如果指定的类型
  结肠癌和前pression省略
。如果
  值为零,则声明
  应没有声明。

C ++为0xA§9.6第1款规定:

C++0xa §9.6, paragraph 1:

...恒定-​​EX pression应为
  整型常量前pression用
  值大于或等于零。
  积分常数的值
  前pression可以比大
  在对象比特数
  的再presentation(3.9)
  位字段的类型; 在这种情况下,
  额外位被用作填充比特
  并且不参与价值
  位字段重新presentation(3.9)

因此​​,在C,可这样做的一切,在C ++中也不会,你希望它是什么做的。

So in C you can't do that at all, and in C++ it won't do what you want it to.

这篇关于结构位域最大尺寸(C99,C ++)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-03 06:16