Pav*_*van 1 c pointers structure function
typedef struct Item{
int i;
int j;
void (*fooprint)(item*);
}item;
void fooprint(item *it){
printf("%d\n",it.i);
}
int main(){
item myitem;
myitem.i=10;
myitem.j=20;
myitem.fooprint = fooprint;
myitem.fooprint(&myitem);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
此代码在void(footprint)(item)中给出错误."错误是预期的')'''''令牌"之前.我错过了什么吗?当我这样做而不使用指针结构是有效的.示例:void(*footprint)(item)
item您使用它时尚未知道该类型.您可以通过前向声明来解决这个问题.
typedef struct Item item;
struct Item {
int i;
int j;
void (*fooprint)(item*);
};
Run Code Online (Sandbox Code Playgroud)
另一种可能性是不使用typedef定义成员:
typedef struct Item {
int i;
int j;
void (*fooprint)(struct Item *);
} item;
Run Code Online (Sandbox Code Playgroud)
我不确定你为什么会遇到特定错误 - 我得到的错误是"错误:未知类型名称'项目'".这是因为typedef还没有"发生",而且C不知道类型item所指的是什么.用来struct Item代替item那里.
(另外,it.i在printf应it->i).
| 归档时间: |
|
| 查看次数: |
5615 次 |
| 最近记录: |