从指针到结构函数的C中执行函数

Executing function in C from pointer to function from a struct

我有一个包含字符串和函数指针的结构,我正在尝试根据要执行的给定字符串搜索特定函数。 我无法编译,因为我收到分配错误。我整天盯着这个看,感觉很烦,所以它很可能很简单。 我尝试了几种不同的方法来格式化结构,但我得到了分配错误的变体,但我能够将其缩小到 return 调用。

typedef struct builtin
{
        char *str;
        int (*func)(void);
} built_t;

/**
 * exec_builtin - matches input to function and runs function
 * @argv: null terminated string of args for program
 * Return: 1 on success, 0 on exit, -1 on failure
 */

int exec_builtin(char **commands)
{
        built_t built_ins[] = {
                {"exit", &func_exit},
                {NULL, NULL}
        };

        int i = 0, function;

        for (i = 0; built_ins[i].str != NULL; i++)
                if (strcmp(built_ins[i].str, commands[0]) == 0)
                {
                        function = *(built_ins + i)->func;
                        return (function);
                }
        return (-1);
}
  • 在你的初始化中,不要使用运算符的地址,只使用函数标识符(而不是 &func_exit,只是 func_exit)。

  • 如果取消引用指针,请使用“.”运算符,如果您使用的是指针,请使用“->”运算符,即 *(built_ins + i).func 或 (built_ins + i)->func 或在本例中 built_ins[i].func

  • 字段func是一个函数指针,如果你想调用那个函数,你应该把它当作一个函数:built_ins[i].func()

为什么将字符串数组传递给函数,但只使用第一个条目?