C «неопределенная ссылка», но я указал ее в том же файле

Я пытаюсь программировать на Nintendo 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*/ }

И если я комментирую строки, где я использую printBlock (в функции drawSnake), код компилируется без ошибок.
Я пытался изменить имя, изменить положение, но я не могу понять, почему только эта функция дает мне ошибку.

2

Решение

Это другая функция (пять аргументов вместо четырех).

Вы, вероятно, хотели назвать это так:

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

(То же самое относится и к другому сайту вызовов.)

7

Другие решения

Вы пропускаете первый аргумент типа 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.

4

По вопросам рекламы [email protected]