gol*_*ean 10 c visual-c++ bit-fields
我有一个代码,它使用如下声明的位字段
typedef struct my{
const char *name;
uint8_t is_alpha : 1;
uint8_t is_hwaccel : 1;
uint8_t x_chroma_shift;
uint8_t y_chroma_shift;
} mystr;
Run Code Online (Sandbox Code Playgroud)
uint8_t是typedef'ed unsigned char.
使用此位字段在MS-VS 2008中构建代码会发出如下警告:
imgconvert.c(60) : warning C4214: nonstandard extension used : bit-field types other than int.
1] 使用除 int 类型以外的位字段是否有任何问题/潜在问题?为什么会有警告?
由于位域是低级的,如果您使用非标准类型,则可能存在可移植性问题。因此警告 - 请注意,它仍然是警告而不是错误。
2] C99 C 语言规范是否允许除 int 类型以外的位文件?
来自C99的草案:
6.7.2.1 结构和联合说明符
4 位域的类型应为 _Bool、signed int、unsigned int 或其他实现定义类型的限定或非限定版本。
| 归档时间: |
|
| 查看次数: |
8132 次 |
| 最近记录: |