我有一个结构数组,其格式为:
struct command functions[] = {
{"1", function1},
{"2", function2},
etc....
}
在函数运行(char *函数)中,我检查参数是否等于存储在struct数组中的一个字符串。如果是,我想调用相应的函数。例如,如果" 1"传入,我调用function1()。
这将如何实现?
到目前为止,我有
run(char* function) {
for (int i = 0; i < num_functions; i++) {
if(*function == functions[i]) {
return (*function)();
}
}
}
出现以下错误:
error: invalid operands to binary == (have int and struct command)
error: called object *function is not a function
答案 0 :(得分:5)
您的代码有几个问题似乎导致了错误,但很遗憾,您还没有足够的帖子让我完全修复它们。
if(*function == function[i])
时,function[i]
行使用functions[i]
(&#34; s&#34;)char
与struct command
进行比较。您可能希望访问包含第一个代码段中显示的字符串的结构成员。strcmp
。char
,这只是不能工作。猜测一下,我想你想要这样的东西:
run(char* function_name) {
for (int i = 0; i < num_functions; i++) {
struct_command function = functions[i];
if(strcmp(function_name, function.name) == 0) {
return function.exec();
}
}
}
这假定struct command
中的成员名为name
和exec
。