struct array中的函数调用

时间:2015-07-13 19:34:29

标签: c arrays function struct

我有一个结构数组,其格式为:

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

1 个答案:

答案 0 :(得分:5)

您的代码有几个问题似乎导致了错误,但很遗憾,您还没有足够的帖子让我完全修复它们。

  1. 当你想要使用if(*function == function[i])时,function[i]行使用functions[i](&#34; s&#34;)
  2. 在同一行中,您要将charstruct command进行比较。您可能希望访问包含第一个代码段中显示的字符串的结构成员。
  3. 您(大概)将单个字符与字符串进行比较。您应该使用strcmp
  4. 执行此操作
  5. 你没有打电话给这个功能,你打电话给char,这只是不能工作。
  6. 猜测一下,我想你想要这样的东西:

    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中的成员名为nameexec