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

标签 c struct function-pointers

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

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/

相关文章:

c - 标记结构初始化、函数及其参数

使用 POSIX 标准将结构复制到 C 中的共享内存

Matlab,结构为矩阵形式,矩阵以正确的方式定向

c++ - 指向成员函数的模板化函数指针

c - 为什么此代码会导致无效指针?

C内存泄漏与valgrind

c - 如何正确比较 C 中的字符串?

c++ - 如何修复该程序中的错误以及为什么我会收到它?

带指针的C程序

c++:无法理解消息处理程序