0

我正在写一个简单的游戏,我最近遇到了似乎并不难解决的问题,但是我没有想法。

在文件 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;
}

field 是在文件 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 是“字段”我收到一个错误:

incompatible types when assigning to type 'struct field' from type 'int'

我真的不知道我在这里做错了什么。blocks.c 中的其他函数可以正常工作而不会抛出任何错误。

有趣的是,当我将结构字段的声明、函数 block_get_field_coordinates 复制到单独的文件中时,它起作用了。

4

1 回答 1

4

你需要你的 main 来查看函数的声明。

例如在主要

extern field block_get_field_coordinates(int x, int y);

或者更好的是把它放在 block.h 中,因为 main 将需要该类型以及使用该类型的任何函数。

于 2013-06-09T07:00:20.500 回答