當我寫了一個question regarding PC-Lint時,我假定以下初始化在C99中有效。 @JoachimPileborg提到它可能不是,我也無法找到任何能夠以這種或那種方式提供良好範例的信息。我知道它的編譯和行爲與我預期的一樣,我只想確切地知道它是適當的C99代碼。使用C99風格的指定初始值設定項列表來初始化聯合中位字段的成員是否有效?
這是一種在C99中初始化下列聯合的有效方法嗎?
typedef union
{
struct
{
unsigned int a : 4;
unsigned int b : 4;
unsigned int c : 4;
unsigned int d : 4;
} bits;
unsigned short value;
} My_Value;
int main (void)
{
My_value test[] =
{
{
.bits.a = 2,
.bits.b = 3,
.bits.c = 2,
.bits.d = 3,
},
{
.bits.a = 1,
.bits.b = 1,
.bits.c = 1,
.bits.d = 0,
},
};
/* Do something meaningful. */
return 0;
}
看起來很理智......如果你的馴服編譯器不會抱怨標準符合,那麼我會使用它。 – vonbrand