Я пишу простую программу с использованием SDL, но столкнулся со странной проблемой. Сначала код:
#ifndef GLOBAL_VARIABLES_H
#define GLOBAL_VARIABLES_H
#include <string>
#include <cassert>
#include "SDL.h"
#include "SDL_image.h"
using std::string;
const int SCREEN_WIDTH = 800;
const int SCREEN_HEIGHT = 600;
const int SCREEN_BPP = 32;
const string MAIN_BACKGROUND_FILENAME = "tempBackground.jpg";
SDL_Rect CARD_CLIPS[2];
const int CARD_BACK = 0;
const int CARD_FRONT = 1;
CARD_CLIPS[CARD_BACK].h = 196;
CARD_CLIPS[CARD_BACK].w = 286/2;
CARD_CLIPS[CARD_BACK].x = 286/2;
CARD_CLIPS[CARD_BACK].y = 0;
CARD_CLIPS[CARD_FRONT].h = 196;
CARD_CLIPS[CARD_FRONT].w = 286/2;
CARD_CLIPS[CARD_FRONT].x = 0;
CARD_CLIPS[CARD_FRONT].y = 0;
#endif
Я получаю следующую ошибку:
1>c:\users\--\global variables.h(23): error C2466: cannot allocate an array of constant size 0
1>c:\users\--\global variables.h(23): error C2143: syntax error : missing ';' before '.'
1>c:\users\--\global variables.h(23): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\--\global variables.h(23): error C2371: 'CARD_CLIPS' : redefinition; different basic types
1>c:\users\--\global variables.h(18) : see declaration of 'CARD_CLIPS'
Повторять одну и ту же ошибку каждый раз, когда я пытаюсь инициализировать элемент SDL_Rect.
Обратите внимание, что часть SDL не имеет никакого отношения к проблеме. Если я пытаюсь объявить массив int и инициализировать его таким же образом, я получаю точно такую же ошибку. Если я помещу что-то из этого в мой main.cpp, он будет работать нормально.
Спасибо за помощь. Дайте мне знать, если потребуется дополнительная информация.
РЕДАКТИРОВАТЬ: Обратите внимание, что я не получаю ошибок, за исключением случаев, когда я пытаюсь использовать массивы в заголовочном файле. Хотя я делаю то, что нужно для понимания традиционного способа ведения дел, я также хочу понять, почему, с фундаментальной точки зрения, я не могу объявлять и инициализировать массивы в заголовочном файле, как этот.