C++: странная ошибка ожидаемого инициализатора перед extern в библиотеке SDL_image.h

В настоящее время я пытаюсь сделать простую игру с SDL и Box2D. К сожалению, код, который я добавил, чтобы персонаж стрелял снарядами, настолько глючный, что я даже не могу начать считать ошибки. Чтобы справиться с этим, я добавил некоторый код, чтобы показать некоторую отладочную информацию в игре. К сожалению, после устранения всех ошибок выскочила странная ошибка, которой раньше не было:

/usr/include/SDL/SDL_image.h|34|error: expected initializer before ‘extern’|
||=== Build finished: 1 errors, 0 warnings ===|

Код в SDL_image.h, который вызывает это:

/* Set up for C function definitions, even when using C++ */
#ifdef __cplusplus
extern "C" {
#endif

Я понятия не имею, что вызывает появление этого сообщения об ошибке или как это решить. В моем коде нет сообщений об ошибках. Я не думаю, что с библиотекой что-то не так, потому что другая игра, которую я делал, компилирует просто файл. Это единственная ошибка, которая выскакивает.


person Magnus    schedule 29.07.2011    source источник
comment
В сообщении об ошибке перед extern говорится, что ifdef не, чем раньше, поэтому вам нужно показать нам строку кода перед этим   -  person Soren    schedule 29.07.2011


Ответы (1)


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

person Mike Seymour    schedule 29.07.2011
comment
+1, но я предполагаю, что это объявление глобальной переменной, а не объявление класса. В g++ 4.3.4 код int x extern int y; выдает ту же ошибку, тогда как class X{} extern int y; выдает другую ошибку. - person Adam Rosenfield; 29.07.2011
comment
Да, после функции отсутствовала точка с запятой. Спасибо! - person Magnus; 30.07.2011
comment
ОМГ ЧЕЛОВЕК. Я ТЕБЯ ЛЮБЛЮ! Я больше часа искал свою ошибку и, наконец, вы меня спасли. Пропал без вести; в последней функции моего заголовочного файла. Большое спасибо! - person George; 03.07.2015
comment
вот оно, отсутствует; !! - person hounded; 28.09.2019