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 は 'field' で、エラーが発生しました:

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

ここで何が間違っていたのか本当にわかりません。blocks.c の他の関数は、エラーを発生させることなく動作します。

興味深いことに、構造体フィールドの宣言、関数 block_get_field_coordinates だけを別のファイルにコピーすると、機能しました。

4

1 に答える 1

4

関数の宣言を表示するには、メインが必要です。

例えばメインで

extern field block_get_field_coordinates(int x, int y);

または、メインが型とその型を使用するすべての関数を必要とするため、block.h に配置することをお勧めします。

于 2013-06-09T07:00:20.500 に答える