runtimeconfig.dev.json
您认为这是在struct中使用函数指针的有效方法吗?
注意::请不要说自己尝试一下。编译没有问题。我只是想知道这是否是C语言的标准属性。还会在其他编译器中编译吗?
答案 0 :(得分:2)
它不能在gcc,clang或tinycc上编译,因此不能编译。 在typedef结束之前,SpriteGrid还不算什么,所以您不能使用它。向前声明该结构(带有标签),并且typedef应该对其进行修复。
typedef struct SpriteGrid SpriteGrid;
typedef struct SpriteGrid /*this typedef is redundant now*/
{
int x1,y1,x2,y2;
int (*division_mode_x)(int i,int x1,int x2,SpriteGrid grid);
int (*division_mode_y)(int i,int y1,int y2);
}SpriteGrid;
或者,您可以
typedef struct SpriteGrid
{
int x1,y1,x2,y2;
//without the forward typedef `SpriteGrid` isn't usable
//here yet, but `struct SpriteGrid` is
int (*division_mode_x)(int i,int x1,int x2,struct SpriteGrid grid);
int (*division_mode_y)(int i,int y1,int y2);
}SpriteGrid;
依赖于标签在struct tag
之后立即可用的事实。