我有一个带回调函数的结构,回调函数需要一个指向结构的指针才能进行操作.如何正确定义这些元素,以便在没有警告的情况下进行编译?
typedef struct {
// some fields required for processing...
int (*doAction)(struct pr_PendingResponseItem *pr);
} pr_PendingResponseItem;
Run Code Online (Sandbox Code Playgroud)
如果我删除pr参数上的"struct"属性,我会收到错误.如果我留下它,我会收到一个警告:"它的范围只是这个定义或声明,这可能不是你想要的"
这一切都有效,但我想知道定义这种结构的正确方法.
另外相关的是定义自引用结构:
typedef struct LinkedItem_ {
LinkedItem_ * prev;
LinkedItem_ * next;
void * data;
} LinkedItem;
Run Code Online (Sandbox Code Playgroud)
(我认为这是正确的,但如果与问题相关,则欢迎其他想法.)