Синтаксическая ошибка массива структур C - PullRequest
0 голосов
/ 07 марта 2012

Вот фрагмент кода, который я получаю, определение SDL_Rect скопировано из документации:

typedef struct{
  Sint16 x, y;
  Uint16 w, h;
} SDL_Rect;


SDL_Rect clips[4];

clips[0].x = 0;
clips[0].y = 0;
clips[0].w = 100;
clips[0].h = 100;

Вот как я его компилирую:

gcc -march=native -static-libgcc -o sprite sprite.c functions.o -L/usr/lib -lSDL -lpthread -lm -ldl -lpthread -lSDL_image

Здесьэто ошибка, которую я получаю: expected '=', ',', ';', 'asm' or '__attribute__' before '.' token для каждой строки клипов [..].Я пытался поставить паратез вокруг клипов [..], но это тоже не сработало.Это простая буква "С", кстати.Не C ++.

Edit

Я скопировал сюда SDL_Rect из документации SDL, чтобы показать, что это было.На самом деле его нет в исходном файле, который я использую.Таким образом, отсутствие точки с запятой не может быть проблемой.И этот код находится в глобальной области видимости.

Ответы [ 5 ]

5 голосов
/ 07 марта 2012

Это (-initialisation-) назначение находится в глобальной области, что невозможно.

Возможно инициализировать массив:

SDL_Rect clips[4] = {
                        { 0, 0, 100, 100 }, /* Element 0 initial values */
                        { 1, 1, 200, 200 }  /* Element 1 initial values */
                                            /* Element 2 and 3 unspecified so
                                               zero initialised. */
                    };

Если C99-совместимый компилятор, вы можете явно указать инициализируемые переменные:

SDL_Rect clips[4] = {
                        { .x = 0, .y = 0, .w = 100, .h = 100 }
                    };
1 голос
/ 07 марта 2012

Отсутствует;после SDL_Rect:

typedef struct{ Sint16 x, y; Uint16 w, h; } SDL_Rect;

0 голосов
/ 07 марта 2012

В конце структуры пропущена точка с запятой:

typedef struct{
  Sint16 x, y;
  Uint16 w, h;
} SDL_Rect;
0 голосов
/ 07 марта 2012

Должно быть:

typedef struct{
Sint16 x, y;
Uint16 w, h;
} SDL_Rect;

Обратите внимание на точку с запятой в конце.

0 голосов
/ 07 марта 2012

Вы, кажется, скучаете по; после SDL_Rect в вашем определении структуры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...