gcc不尊重包含文件的层次结构

gcc不尊重包含文件的层次结构,gcc,include,g++,Gcc,Include,G++,我用了层次这个词,但我不确定它是否正确!让我解释一下 我有A.h.和: #include <iostream> #include <vector> using namespace std; 和X.cpp: #include "X.h" // and the rest 但当我用GCC编译时,它在B.h中表示,vector未定义,等等。请注意,这是一个解释问题的示例。我试图转换为在linux上编译的项目在Visual Studio下的Windows上编译得非常完美 我可

我用了层次这个词,但我不确定它是否正确!让我解释一下

我有A.h.和:

#include <iostream>
#include <vector>
using namespace std;
和X.cpp:

#include "X.h"

// and the rest
但当我用GCC编译时,它在B.h中表示,vector未定义,等等。请注意,这是一个解释问题的示例。我试图转换为在linux上编译的项目在Visual Studio下的Windows上编译得非常完美


我可以更改文件,但这是一个300多个文件的项目,因此任何帮助或建议都会非常有效?

您发布的代码没有问题,而且在gcc中似乎不太可能出现这种性质的错误

更有可能的是,问题并不是看起来的那样。例如,可能是您的项目中有多个A.h、B.h或X.h文件,并且某个地方包含了错误的文件


我的建议是通过预处理器gcc-E运行一个有问题的.cpp文件并检查结果。这将准确地告诉您何时包含了什么。

错误很愚蠢。在某些if-else-endif部分中,一组代码在前面关闭了命名空间的括号。。。这让史蒂夫把一切都搞砸了!通常,它应该编译。我以前就用过这种方法。OpenGL至少有一个版本是通用的
#include "A.h"
#include "B.h"
#include "X.h"

// and the rest