c - 来自结构数组的函数调用

标签 c arrays function struct

<分区>

我有一个具有以下格式的结构数组:

struct command functions[] = {
    {"1", function1},
    {"2", function2},
    etc....
}

在函数 run(char* function) 中,我检查参数是否等同于存储在结构数组中的字符串之一。如果是,我想调用相应的函数。例如,如果传入“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. if(*function == function[i]) 行中,当您可能想使用 functions[ i](带有“s”)
  2. 在同一行中,您将 charstruct command 进行比较。您可能想要访问包含第一个代码片段中显示的字符串的结构成员。
  3. 您(大概)正在将单个字符与字符串进行比较。您应该使用 strcmp 执行此操作。
  4. 您不是在调用该函数,而是在调用一个 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 中的成员被命名为nameexec

关于c - 来自结构数组的函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31391918/

相关文章:

C编程和error_code变量效率

c - 无法在 c 函数中返回正确的变量

javascript - 如何在 Three.js 中加载 json 对象数组?

javascript - javascript 中 2 个数字相加不正确

javascript - 访问自执行函数中的同级函数

c - 二维字符数组

c - 无法在 C 中初始化指针数组

php - 如何减少向数组添加值的时间?

java - 从 Android 编写的文本文件中读取数值

function - firebase 云函数 - https.onCall(....) 可以使用 Context.Auth 吗?