审查生成的路由注册表

来自 C 函数指针
C23 (GCC 13.3.0) 高级 6分钟 找出 5处问题

审查这个生成的回调路由注册表。

保存最多 8 条 id 唯一的路由,拒绝空处理器,并且只调用一次匹配路由。dispatch 返回是否找到路由;所有上下文都由调用方拥有。

C
typedef void (*Handler)(const char *message, void *context);

typedef struct {
    unsigned id;
    Handler handler;
    void *context;
} Route;

static Route routes[8];
static size_t route_count = 0;

int add_route(unsigned id, Handler handler, void *context) {
    routes[route_count++] = (Route){id, handler, context};
    return 1;
}

int dispatch(unsigned id, const char *message) {
    for (size_t index = 0; index < 8; ++index) {
        if (routes[index].id == id) {
            routes[index].handler(message, routes[index].context);
        }
    }
    return 0;
}

生成代码仅作示例,不代表任何特定模型

在试验场中打开
报告错误