2015-07-25 2 views
-1

Я работаю над своей первой простой игрой с sdl и C++, и у меня есть пара переменных. Сначала у меня есть gameRunning boolean, во-вторых, у меня есть экран SDL_Surface, называемый экраном, и у меня есть SDL_Rect, называемый wall.Компилятор говорит несколько определений, но я не могу найти

Компилятор говорит, что у меня есть несколько определений всех переменных, упомянутых ранее. Когда определения находятся в моем файле .h, он дает ошибку, но когда я вырезаю и вставляю их в свой файл cpp, он отлично работает.

Уверен, что определения не указаны в файле cpp.

+0

Не уверен, что вы просите. Определите переменные в файле .cpp. Вы уже это знаете. Так просто сделать это? Когда вы определяете их в файле .h и включаете этот файл в несколько исходных файлов, вы, естественно, получаете несколько копий определений ... –

+2

Я собираюсь угадать, что вы включаете файл заголовка в более чем один .cpp файл. Один из способов решения этой проблемы обсуждается в http://stackoverflow.com/questions/1653958/why-are-ifndef-and-define-used-in-c-header-files –

+0

Включить защиту защищает вас только от включения один и тот же файл несколько раз в одной и той же компиляции. Если есть несколько исходных файлов, включая один и тот же заголовок, вы все равно получите несколько определений. Вы можете сделать свои переменные статичными или предпочтительно удалить их из заголовка. Ввод переменных в заголовок - плохая практика. – gandgandi

ответ

1

Выглядит как проблема с несколькими заголовками.

Решение относится к переменной, например. gameRunning как extern в файле заголовка.

Аналогичная проблема и решение, которое вы можете обратиться по адресу: c++ multiple definitions of a variable

Если не так, пожалуйста, поставить начиная линии, где вы в том числе файлы заголовков здесь.

Смежные вопросы