我在windows上编译代码有问题。
在基于Unix的系统上,一切正常,但是当我在windows上编译它(目前使用的是visual studio 2010 express)时,我会得到以下错误:
错误253个错误C2146:语法错误:缺少';‘在标识符'N0’C:\ghost++\ghost\ohconnect.h 45之前 错误254错误C4430:缺少类型说明符- int假设。注意: C++不支持默认-int C:\ghost++\ghost\ohconnect.h 45。 错误255错误C4430:缺少类型说明符- int假设。注意: C++不支持默认-int C:\ghost++\ghost\ohconnect.h 45。 错误256个错误C2146:语法错误:缺少';‘在标识符'N’C:\ghost++\ghost\ohconnect.h 46之前 错误257错误C4430:缺少类型说明符- int假设。注意: C++不支持默认-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;,并且只为windows包含了<string>。但到目前为止,这一切都不起作用。我不想把所有的文件都放在这个问题上,因为它们实际上很长。以下是完整的源代码:头文件 主文件
我在这里做错了什么?
发布于 2014-11-09 07:27:59
编译器不知道uint64_t和uint8_t的类型,添加:
#include <cstdint>发布于 2014-11-09 07:34:49
还请注意,尾随逗号在枚举中(在定义PONG = 0xa之后)仅在C++11中标准化,这是在C99中进行的更改。旧的编译器或运行模式遵循旧的1998/2003标准的编译器也可能会忽略这一点。
https://stackoverflow.com/questions/26825980
复制相似问题