我遇到了一些我以前从未见过的 C 语法:
static struct {
char *name;
void (*f)(int a, int b, int c);
} commands[] = {
{ "cmd1", func1 },
{ "cmd2", func2 },
{ "cmd3", func3 },
};
这与将用户输入命令与相应功能之一相匹配的命令解析器有关,如下所示:
for (int i = 0; i < N; ++i) {
if (strcmp(args[0], commands[i].name) == 0) {
(commands[i].f)(a, b, c);
return;
}
}
我什至无法搜索谷歌寻求帮助,因为我不知道这种结构叫什么,而且看起来有些深奥。
我想要做的是创建更多这些结构,然后将循环放入一个单独的函数中并对其进行泛化,以便我可以根据某些条件向函数传递不同的结构。但是我不知道如何将结构分配给变量并将它们传递给函数。