具有相同参数类型的结构中的函数指针

时间:2011-02-04 05:35:54

标签: c struct function-pointers

我正在尝试创建一个结构,该结构具有一个函数的函数指针,该函数采用与参数相同的结构。我现在有这个。

typedef struct sharedData
{
    sem_t* forks;
    int id;
    void (*forkFunc)(sharedData*);
};

我遇到了像

这样的错误
  

错误:预期')'在'*'标记之前

之类的警​​告
 warning: no semicolon at end of struct or union 
 warning: useless storage class specifier in empty declaration

我在这里做错了什么?

1 个答案:

答案 0 :(得分:6)

问题在于,当您使用typedef struct引入不需要struct关键字的新struct时,您无法引用typedef - struct声明中的ed名称。相反,您需要使用结构的全名。例如:

typedef struct sharedData
{
    sem_t* forks;
    int id;
    void (*forkFunc)(struct sharedData*);
};

此外,您的typedef声明目前无效,因为您没有给出呼叫struct sharedData的名称。解决这个问题的一种方法如下:

typedef struct sharedData
{
    sem_t* forks;
    int id;
    void (*forkFunc)(struct sharedData*);
} sharedData;

现在,您可以使用全名struct sharedData或简写名称sharedData来引用结构。