ran*_*ght 3 c struct function-pointers
我正在尝试创建一个结构,该结构具有一个函数的函数指针,该函数使用与参数相同的结构.我现在有这个.
typedef struct sharedData
{
sem_t* forks;
int id;
void (*forkFunc)(sharedData*);
};
Run Code Online (Sandbox Code Playgroud)
我收到的错误就像
错误:在'*'标记之前预期')'
和警告一样
warning: no semicolon at end of struct or union
warning: useless storage class specifier in empty declaration
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?
问题是当你typedef struct
用来引入一个struct
不需要struct
关键字的新东西时,你不能typedef
在声明中引用-ed名称struct
.相反,您需要使用结构的全名.例如:
typedef struct sharedData
{
sem_t* forks;
int id;
void (*forkFunc)(struct sharedData*);
};
Run Code Online (Sandbox Code Playgroud)
此外,您的typedef
声明目前无效,因为您没有给出要呼叫的名称struct sharedData
.解决这个问题的一种方法如下:
typedef struct sharedData
{
sem_t* forks;
int id;
void (*forkFunc)(struct sharedData*);
} sharedData;
Run Code Online (Sandbox Code Playgroud)
现在,您可以通过全名struct sharedData
或简写名称来引用结构sharedData
.