Я использую код here, и я хочу, чтобы все функции, вызывающие функции SDL, были в другом файле заголовка вместо основного .cpp-файла. Поэтому я создал новый файл под названием Methods.h. Вот что файлы выглядеть следующим образом:Почему Code :: Blocks показывает множественное определение ошибки?
main.cpp:
#include "Methods.h"
...
Methods.h:
#include "SDL/SDL.h"
#include "SDL/SDL_opengl.h"
....
И я удалил все функции из основных и поместить их в Methods.h
Когда я пытаюсь построить проект, он говорит: «Ошибка множественного определения» ,
/media/Data1/Projects/OpenGL/Game2/Methods.h|29|multiple definition of `event'|
obj/Debug/main.o:/media/Data1/Projects/OpenGL/Game2/Methods.h|29|first defined here|
obj/Debug/src/Machine.o||In function `drawFrame()':|
/media/Data1/Projects/OpenGL/Game2/Methods.h|29|multiple definition of `drawFrame()'|
obj/Debug/main.o:/media/Data1/Projects/OpenGL/Game2/Methods.h|29|first defined here|
obj/Debug/src/Machine.o||In function `init_GL()':|
/media/Data1/Projects/OpenGL/Game2/Methods.h|73|multiple definition of `init_GL()'|
obj/Debug/main.o:/media/Data1/Projects/OpenGL/Game2/Methods.h|73|first defined here|
obj/Debug/src/Machine.o||In function `init()':|
/media/Data1/Projects/OpenGL/Game2/Methods.h|97|multiple definition of `init()'|
obj/Debug/main.o:/media/Data1/Projects/OpenGL/Game2/Methods.h|97|first defined here|
obj/Debug/src/Machine.o||In function `clean_up()':|
/media/Data1/Projects/OpenGL/Game2/Methods.h|123|multiple definition of `clean_up()'|
obj/Debug/main.o:/media/Data1/Projects/OpenGL/Game2/Methods.h|123|first defined here|
Где включают охрану? '#ifndef METHODS_H_ #define METHODS_H_ ... # endif' – maverik
Спасибо. Я их положил. Однако это не решило. Есть ли необходимость в моем случае? – batman
Это не решает проблему, но настоятельно рекомендуется использовать включенные охранники в файлах include. – maverik