2

私はニンテンドー DS プログラミングを試みており、main.cpp ファイル、snake.h ファイル、snake.cpp ファイルがあります。(Makefileを使用して)コンパイルすると、

/home/david/Dropbox/sources/ds/04_snake/source/snake.cpp:228: undefined reference to `printBlock(int, int, unsigned short, int)'
/home/david/Dropbox/sources/ds/04_snake/source/snake.cpp:230: undefined reference to `printBlock(int, int, unsigned short, int)'

この関数のエラーです

void drawSnake(game g) {
    int i;
    printBlock(g->s->last[0], g->s->last[1], g->bgColor, g->block);
    for(i=0; g->s->points[i][0]!=-1 && i<MAXLENGHT; i++)
        printBlock(g->s->points[i][0], g->s->points[i][1], g->s->color, g->block);
    return;
}

しかし、同じファイルの約 100 行前に、

int printBlock(game g, int x, int y, u16 color, int thickness) { /*code*/ }

また、(drawSnake 関数で) printBlock を使用する行にコメントを付けると、コードはエラーなしでコンパイルされます。名前を変更して位置を変更しようとしましたが、その関数だけでエラーが発生する理由がわかりません。

4

2 に答える 2

7

これは別の関数です (4 つではなく 5 つの引数)。

おそらく、次のように呼び出すつもりでした。

printBlock(g, g->s->points[i][0], ...
           ^ THIS

(他の呼び出しサイトも同様です。)

于 2012-11-30T21:21:46.727 に答える
4

タイプ の最初の引数がありませんgame。おそらく 228 行目を変更する必要があります。

    printBlock(g->s->last[0], g->s->last[1], g->bgColor, g->block);

これに:

    printBlock(g, g->s->last[0], g->s->last[1], g->bgColor, g->block);

230行目も同様です。

于 2012-11-30T21:22:06.397 に答える