【发布时间】:2016-01-14 00:43:11
【问题描述】:
编译器显示 2 个错误:
C2146 - 语法错误:缺少 ';'在标识符“开始”之前
C4430 - 缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数
我的"Globals.h" 文件第 5 行出现错误。
在这里:
#pragma once
#include "Load.h"
#include "SortStream.h"
extern Load begin;
extern int sort_by;
extern int sort_type;
extern vector<Flight> all_flights;
extern SortStream sort_stream;
我的"Globals.cpp" 文件如下所示:
#include "Globals.h"
Load Begin;
int sort_by;
int sort_type;
vector<Flight> all_flights;
SortStream sort_stream;
还有,这里是"Load.h" 文件:
#pragma once
#include <vector>
#include "Flight.h"
#include "Globals.h"
using namespace std;
class Load {
std::string path;
vector<Flight> allFlights;
public:
Load();
std::string get_path();
vector<Flight> get_allFlights();
void set_path(std::string p);
void set_allFlights(vector<Flight> v);
void load_flights();
};
还有"SortStream.h"文件:
#pragma once
#include <vector>
#include "Flight.h"
using namespace std;
class SortStream {
vector< vector < Flight > > layout;
int switchNum;
int iterationNum;
int compareNum;
public:
SortStream();
vector< vector < Flight > > get_layout();
int get_switchNum();
int get_iterationNum();
int get_compareNum();
void set_layout(vector< vector < Flight > > v);
void set_switchNum(int n);
void set_iterationNum(int n);
void set_compareNum(int n);
};
有人知道原因吗?提前通知
【问题讨论】:
-
sortstream.h 中可能有问题。当包含一个文件时,它只是逐字删除,所以如果 .h 文件的末尾有一些奇怪的东西,编译器直到包含文件中的后续行才能真正确定它是错误的。但是,如果没有看到 sortstream.h,我无法告诉你真正的问题是什么。
-
global.h 包含 load.h,而在 load.h 中您包含 global.h。那是行不通的。
-
@xaxaon 我编辑了帖子,这里是“SortStream.h”文件
-
仅使用 gcc -E 标志通过预处理器运行它。看一下在 Global.h:5 上使用 Load 之前是否定义了它我没有看到任何明显错误
-
我删除了 Flight.h 和 Flight 类的所有引用(因为你没有提供它),在一个地方添加了一个 #include
并用 gcc -c Globals 编译它就好了.cpp
标签: c++ compiler-errors global-variables