【发布时间】:2013-07-20 07:00:33
【问题描述】:
假设我的项目包含来自第 3 方库的标头,其中包含以下内容:
struct foo {
signed int x:4;
};
如果不假设位字段的宽度始终为 4,并且不依赖实现定义的行为,我如何确定可以存储在成员 x 中的最大值?
【问题讨论】:
-
可靠地你只能存储
1111。 -
@GrijeshChauhan:“不假设位字段的宽度始终为 4。”第 3 方开发者可能会在下一个版本中将宽度更改为 5。或者 13. 或者别的什么。当位域的宽度发生变化时,我不希望我的代码中断。
-
我没有得到 :( ,
Without assuming that the bit-field will always have width 4它总是有 4-with 任何编译器......我错过了什么吗? -
@GrijeshChauhan:在 3rd 方库的下一版本中,4 可能会更改为 5 或其他内容。
-
好的,知道了!现在..好问题。但是:(不知道,我觉得只有你可以从第三方库文档中知道这一点。但是如何构建稳定的代码??仍然是一个问题......
标签: c c99 bit-fields c11