我有一個使用聲明位字段如下int類型以外的位域?
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;
uint8_t
被Typedef的到unsigned char
代碼。
使用該位字段構建代碼的MS-VS 2008提供瞭如下警告:
imgconvert.c(60) : warning C4214: nonstandard extension used : bit-field types other than int.
- 是否有任何問題/潛在問題,在使用除int之外類型的位字段?爲什麼警告?
- 除了C99 C語言規範允許的int型位文件外,還有其他的嗎?
這個警告是不言自明的:__nonstandard extension used__;你的代碼可能有可移植性問題。 – 2010-02-17 12:28:00
@Mehrad:只有當所有目標/編譯器具有相同大小的整數時,使用int類型纔可用於可移植性方面。 – goldenmean 2010-02-17 12:51:01
您正在寫關於位域的信息,它們的大小在代碼中指定。 – AProgrammer 2010-02-17 13:27:15