sccz80:"../lib/main.c" L:16 Предупреждение:#14: Ожидается ',' sccz80:"../lib/main.c" L:16 Ошибка:#28: Ошибка сегментации
При компиляции кода ниже появляется следующая ошибка:
sccz80:"../lib/main.c" L:16 Warning:#14:Expected ','
sccz80:"../lib/main.c" L:16 Error:#28:Segmentation fault
/*
* A test game of Pong using the Z88dk
*/
#include <spectrum.h>
#include <graphics.h>
#include <sprites/sp1.h>
#include <stdio.h>
struct Bat {
int x;
int y;
int w;
int h;
};
void clear_screen(Bat* bat)
{
undrawb(bat.x, bat.y, bat.w, bat.h);
}
int main()
{
struct Bat bat;
bat.x = 0;
bat.y = 0;
bat.w = 8;
bat.h = 24;
while(1)
{
zx_border(INK_GREEN);
clear_screen(&bat);
drawb(bat.x, bat.y, bat.w, bat.h);
}
return 0;
}
Есть предложения по поводу того, в чем может быть проблема? Я использую z88dk для создания тестовой программы ZX Spectrum. К сожалению, у меня недостаточно очков, чтобы добавить тег z88dk. Приносим извинения за это.
1 ответ
У вас в программе 2 ошибки:
void clear_screen(Bat* bat)
{
undrawb(bat.x, bat.y, bat.w, bat.h);
}
Нет типа Bat
определено в вашем коде. Толькоstruct Bat
. потомbat
имеет тип "указатель на структуру". Это означает, что вы не можете получить доступ к членам структуры, используя.
оператор, но вам нужно разыменовать через ->
.
Действительно странно, что ваш компилятор выдает сообщение об ошибке, которое не содержит ни одной из этих ошибок, а вместо этого упоминает строку (при условии, что L:16
указывает строку 16) и некоторые причины, не соответствующие коду.