我在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
等等。 我认为这与我的头文件有关,类本身是连接到websockets:
#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>
用于Windows。
但到目前为止,这一切都没有奏效。我不想将整个文件放入问题,因为它们实际上很长。
这是完整的来源:
Headerfile
Mainfile
我在这里错了什么?
答案 0 :(得分:4)
编译器不知道类型uint64_t
和uint8_t
,添加:
#include <cstdint>
答案 1 :(得分:2)
另请注意,在C99中进行更改之后,枚举中的尾随逗号(在定义PONG = 0xa
之后)仅在C ++ 11中标准化。较旧的编译器或按照旧的1998/2003标准运行的模式也可能会超过它。