Enum

2 文章

枚举和联合体

4 分钟

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。它很常见,也很有用,但正确性靠纪律:

阅读更多