我已經制作了一個可以在LISP中使用的整數和指針等結構。如何初始化C中的匿名結構的第二個成員?
指針至少8字節對齊,所以tag = 0。 整數是29位,標記爲1. 其他類型具有不同的標記值。
struct Atom{
union{
Pair *pair;
struct{
unsigned tag :3;
union{
int val :29;
char ch;
struct{
int mant :21;
Exp exp :8;
};
};
};
};
};
我想對它們進行不同的初始化。
爲指針:
Atom aPair = {{.pair=0}}; // works
或
Atom aPair = {{0}}; //works
這樣做是因爲,我認爲,GCC假設我要初始化聯盟的第一個成員。
我也想初始化一個整數 - 這樣的事情:
Atom anInt={{ {.tag=1,{.val=0} } }};
我知道這是不是標準的C,但是這是不可能的,在GCC匿名結構?
有一個答案,我評論 - 它去了哪裏? 有人建議我嘗試Atom anInt = {。tag = 1,.val = 0}; 它沒有工作,但它是我沒有嘗試過的東西,我讚賞他們花時間閱讀我的問題並提出建議。 – philcolbourn 2010-02-17 11:22:19