【发布时间】:2020-02-20 12:11:06
【问题描述】:
我想定义一个接受(类型,值)对并对它们执行一些操作的 API。
typedef enum {
TTL_ENTRY = 1,
ACCESS_ENTRY = 2
}type_t;
typedef struct {
type_t type;
uint32 value;
}type_val_t;
int entries_add(size_t count, type_val_t *type_val);
每种类型都有自己的可能值范围。
TTL_ENTRY 的值可以是任意值的 uint32。
ACCESS_ENTRY 的值应该只接受来自枚举的值:
typedef enum {
STATE_NONE = 0,
STATE_DROP,
STATE_PATH
/* ... */
}state_t;
有没有办法让这个 API 更清楚地知道哪个值应该与哪个类型配对? 或者以某种方式为 type_t 中的每个类型绑定一个值类型?
我认为将值类型从 uint32 转换为可能值的联合,如下所示:
typedef union {
uint32 ttl_bitmap;
state_t state;
}value_t;
typedef struct {
type_t type;
value_t value;
}type_val_t;
但即使使用这种类型,也不是 100% 清楚哪个值应该与哪个类型耦合。
【问题讨论】: