我正在尝试创建一个结构,该结构具有一个函数指针,该函数指针采用与参数相同的结构。我现在有这个。
typedef struct sharedData
{
sem_t* forks;
int id;
void (*forkFunc)(sharedData*);
};
我收到类似这样的错误
error: expected ‘)’ before ‘*’ token
和类似的警告
warning: no semicolon at end of struct or union
warning: useless storage class specifier in empty declaration
我在这里做错了什么?
最佳答案
问题是,当您使用 typedef struct
引入不需要 struct
关键字的新 struct
时,您不能在 struct
的声明中引用 typedef
编辑的名称。相反,您需要使用结构的全名。例如:
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
来引用该结构。
关于c - 具有相同参数类型的结构中的函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4894902/