Я пытаюсь передать пару массивов структур функции в C.
Я должен использовать компилятор SDCC, так как я компилирую для Gameboy с использованием GBDK.
Когда я передаюВ массиве структур я получаю сообщение об ошибке, как показано ниже, однако, если я полностью вырежу определение функции и просто вырежу и вставлю все тело функции вместо вызова функции, то код компилируется и работает гладко.
Для краткости я включаю только соответствующий код.
// Struct definitions
struct point {
UINT16 x, y;
INT8 h;
INT8 h_tot;
};
typedef struct point Point;
Point layer1[25];
Point layer2[49];
// Function declarations
void createMap2();
void updateLayers( Point layer2[], Point layer1[], UINT16 limLo, UINT16 limHi, UINT16 limLast, INT8 layer );
void createMap2(){
UINT16 limLo = 0;
UINT16 limHi = 7;
UINT16 limLast = 5;
INT8 layer = 2;
updateLayers( layer2, layer1, limLo, limHi, limLast, layer );
// do more stuff
}
void updateLayers( Point layer2[], Point layer1[], UINT16 limLo, UINT16 limHi, UINT16 limLast, INT8 layer ){
// Do things within function
}
Когда я пытаюсь скомпилировать с использованием GBDK и компилятора SDCC, я получаю следующую ошибку:
C:\Users\terri\gbdk\testgame>..\bin\lcc -V -Wa-l -Wl-m -Wl-j -DUSE_SFR_FOR_REG -c -o testgame.o testgame.c
testgame.c(457):error *** Actual Argument type different from declaration 1
КогдаЯ удаляю вызов функции и просто вырезаю и вставляю полное тело функции вместо вызова функции, затем он плавно компилируется, и я получаю симпатичную небольшую рандомизированную карту тайлов геймбоя.
Изображение может бытьвидно, что у меня нет представителя для изображений:
TestgameScreen