要使用 Gid
和 CmdID
调用指定的回调业务处理函数,你可以创建一个映射表(或者使用其他适合的数据结构),将 Gid
和 CmdID
与对应的回调函数关联起来。当收到特定的 Gid
和 CmdID
时,你可以查找映射表并调用相应的回调函数。
以下是一个示例代码,演示了如何使用 Gid
和 CmdID
调用指定的回调业务处理函数:
#include <stdio.h>
// 定义回调函数类型
typedef void (*CallbackFunction)(int, int);
// 定义映射表的结构体
typedef struct {
int gid;
int cmdId;
CallbackFunction callback;
} CallbackMapping;
// 定义回调函数1
void callback1(int gid, int cmdId) {
printf("Callback 1 called with Gid: %d, CmdID: %d\n", gid, cmdId);
}
// 定义回调函数2
void callback2(int gid, int cmdId) {
printf("Callback 2 called with Gid: %d, CmdID: %d\n", gid, cmdId);
}
int main() {
// 创建映射表
CallbackMapping mappings[] = {
{1, 1, callback1},
{1, 2, callback2},
// 可以添加更多的映射项
};
// 模拟收到的 Gid 和 CmdID
int receivedGid = 1;
int receivedCmdId = 2;
// 在映射表中查找匹配的回调函数
CallbackFunction callback = NULL;
for (int i = 0; i < sizeof(mappings) / sizeof(CallbackMapping); i++) {
if (mappings[i].gid == receivedGid && mappings[i].cmdId == receivedCmdId) {
callback = mappings[i].callback;
break;
}
}
// 调用匹配的回调函数(如果找到)
if (callback != NULL) {
callback(receivedGid, receivedCmdId);
} else {
printf("No matching callback found for Gid: %d, CmdID: %d\n", receivedGid, receivedCmdId);
}
return 0;
}