gpt4 book ai didi

c - 在 C 中初始化结构数组然后取消引用

转载 作者:太空宇宙 更新时间:2023-11-04 05:28:37 25 4
gpt4 key购买 nike

我正在尝试构建一个串行命令解释器,所以我想将我的命令存储在一个数组中。我希望每个命令都有一个名称和一个函数指针,以便我可以将命令名称与我输入的内容进行比较,然后调用该函数。我对C不太好,所以请帮忙!这是我目前所拥有的。

命令数组将是一个结构数组。每个结构都有一个字符串和一个函数指针。这里有错误,但我不知道如何修复它们。这些都是在 main 之前完成的。

typedef struct cmdStruct {
char cmd[16];
void (*cmdFuncPtr)(void);
}CmdStruct;

void (*ledFuncPtr)(void);
void (*cmd2FuncPtr)(void);

// assign pointers to functions
ledFuncPtr = &LedFunction;
cmd2FuncPtr = &Cmd2Function;

//build array of structs
CmdStruct cmdStructArray[] = cmdStructArray = { {"led", ledFuncPtr },
{"cmd2", cmd2FuncPtr }, };

稍后,我将通过结构数组将其与接收到的命令进行比较。

// go through the struct array to do string comparison on each struct's string member
for (int i = 0; i < sizeof(cmdStructArray); i++) {
// string comparison of received command and string of struct
if(strcmp(cmdStructArray[i].cmd, receivedCmd)==0) {
// dereference function pointer
(*cmdStructArray[i].cmdFuncPtr)(void);
}
}

我哪里做错了,我该如何解决?

最佳答案

sizeof(cmdStructArray) 不是以元素为单位,而是以字节为单位。

使用sizeof(cmdStructArray)/sizeof(cmdStructArray[0])

关于c - 在 C 中初始化结构数组然后取消引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14244833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com