Я пишу простую программу с использованием 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, он будет работать полностью нормально.
Спасибо за помощь. Сообщите мне, если потребуется дополнительная информация.
РЕДАКТИРОВАТЬ: Обратите внимание, что я не получаю ошибок, кроме случаев, когда я пытаюсь использовать массивы в файле заголовка. Хотя я делаю то, что нужно понимать обычным способом, я также хочу понять, почему с фундаментальной точки зрения я не могу объявлять и инициализировать массивы в таком заголовочном файле.