枚举和联合体
C 里 enum 和 union 经常一起出现。enum 表示当前是哪种类型,union 复用同一块内存保存不同数据:
enum ValueKind {
VALUE_INT,
VALUE_FLOAT,
VALUE_TEXT,
};
struct Value {
enum ValueKind kind;
union {
int i;
float f;
const char *text;
} data;
};
这是 C 里的 tagged union。它很常见,也很有用,但正确性靠纪律:
阅读更多