У меня проблема с компиляцией моего кода в Windows.
В системах на базе Unix все работает нормально, но когда я компилирую его на windows (в настоящее время с visual studio 2010 express), я получаю следующие ошибки:
Ошибка 253 ошибка C2146: синтаксическая ошибка: отсутствует ';' перед идентификатором 'N0' C:\ghost++\ghost\ohconnect.h 45
Ошибка 254 ошибка C4430: отсутствующий спецификатор типа - int предполагается. Примечание: C++ не поддерживает default-int C:\ghost++\ghost\ohconnect.h 45
Ошибка 255 Ошибка C4430: отсутствует спецификатор типа - int. Примечание: C++ не поддерживает default-int C:\ghost++\ghost\ohconnect.h 45
Ошибка 256 ошибка C2146: синтаксическая ошибка: отсутствует ';' перед идентификатором 'N' C:\ghost++\ghost\ohconnect.h 46
Ошибка ошибки 257 C4430: отсутствует спецификатор типа - int. Примечание: C++ не поддерживает default-int C:\ghost++\ghost\ohconnect.h 46
И так далее. Я думаю, что все это относится к моему заголовочному файлу, сам класс предназначен для подключения к веб-сайтам:
#ifndef OHConnect_H
#define OHConnect_H
//
// OHCONNECT
//
class CTCPClient;
class CBaseGame;
class CCommandPacket;
struct OHCHeader {
unsigned header_size;
bool fin;
bool mask;
enum opcode_type {
CONTINUTATION = 0x0,
TEXT_FRAME = 0x1,
BINARY_FRAME = 0x2,
CLOSE = 8,
PING = 9,
PONG = 0xa,
} opcode;
uint64_t N0;
uint64_t N;
uint8_t masking_key[4];
};
В моем .cpp
файле я использую namespace std;
и включал <string>
только для окон. Но все это пока не работает. Я не хотел ставить целые файлы в вопрос, потому что они на самом деле длинные. Вот полный источник: Headerfile Mainfile
Что я здесь не так?
Компилятор не знает тип uint64_t
и uint8_t
, добавляет:
#include <cstdint>
Заметим также, что конечная запятая в перечислении (после определения PONG = 0xa
) была стандартизирована только в С++ 11, после изменения, внесенного в C99. Более старые компиляторы или те, которые работают в режиме, соответствующем старому стандарту 1998/2003, могут также преодолеть это.
#include
ingstdint.h
должно исправить эти ошибки.