在C中的typedef结构中调用函数

时间:2011-09-14 11:33:57

标签: c function struct

我找到了一个与我的问题类似的答案here。但它没有按照我的预期运作。 所以我有

void funcA(void) {
  // do sth.
}
void funcB(void) {
  // do sth.
}

typedef struct tasks {
    int val;
    void (*Start)(void);
} tasks; 

const tasks tasklist[] = 
    {       
        {0, funcA},
        {3, funcB}
    };

for (i=0; i < task_cnt; i++ )     
    if (tasklist[i].val == 3)
        tasklist[i]->Start();

但是在“...-&gt; Start();”编译器说“表达式必须有指针类型”。

有什么想法吗? 感谢

2 个答案:

答案 0 :(得分:2)

您必须使用tasklist[i].Start()而不是tasklist[i]->Start()

这是因为 ab 用于访问对象的成员b,而 a-&gt; b 访问对象的成员b

您可以获得完整的解释here

答案 1 :(得分:1)

您访问Start的方式与访问val的方式相同 - 点数为tasklist[i].Start()