我已经为int和pointer等创建了一个结构,这可能在Lisp中使用。
指针至少对齐8个字节,因此标记=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中匿名结构有可能实现吗?