我正在写一个简单的游戏,我最近遇到的问题似乎并不难解决,但是我没有想法。
在文件blocks.c和其他函数中我定义了一个简单的函数:
field block_get_field_coordinates(int x, int y)
{
field temp;
temp.x = floor( x / 65 ) * 65 + 15;
temp.y = floor( y / 65) * 65 + 15;
return temp;
}
字段是在文件grid.h中声明的结构
struct field
{
int x, y;
}f;
typedef struct field field;
在main.c中,当我尝试以下内容时:
f = block_get_field_coordinates(blocks[x][y].x4, blocks[x][x].y4);
如果f是'field',我收到错误:
incompatible types when assigning to type 'struct field' from type 'int'
我真的不知道我在这里做错了什么。 blocks.c中的其他函数可以正常工作而不会丢失任何错误。
有趣的是,当我只复制struct field的声明时,函数block_get_field_coordinates到单独的文件中,它起作用了。
答案 0 :(得分:4)
您需要主人才能看到该功能的声明。
e.g。在主要
extern field block_get_field_coordinates(int x, int y);
或者更好地将它放在block.h中,因为main需要类型以及使用该类型的任何函数。