g ++,Xerces 3.1,“memcpy未在此范围内声明”

时间:2015-04-20 17:38:37

标签: c++ g++ xerces xerces-c

在我这个项目的makefile中,我为编译器指定了3个位置来查找#includes。

INCLUDES=-I. -I/home/kelly/xerces/xerces-c-3.1.1/src -I/home/kelly/Utilities_New

当我使用注释中的命令行编译以下示例代码时:

#include <iostream>
#include <string>
#include <sstream>
#include <iomanip>
#include <xercesc/util/XMLString.hpp>

using namespace std;

/*
g++ -I. -I/home/kelly/xerces/xerces-c-3.1.1/src -I/home/kelly/Utilities_New test.cpp
*/

int main(int argc, char* argv[])
{
    cout << "this works" << endl;
}

In file included from /home/kelly/Utilities_New/string.h:5:0,
             from /home/kelly/xerces/xerces-c-3.1.1/src/xercesc/framework/XMLBuffer.hpp:28,
             from /home/kelly/xerces/xerces-c-3.1.1/src/xercesc/util/XMLString.hpp:26,
             from test.cpp:7:
/home/kelly/Utilities_New/defs.h:26:21: fatal error: windows.h: No such file or directory
compilation terminated.

显然,编译器决定在处理Xerces #includes并在Utilities_New目录中找到string.h时,它已经找到了它需要的东西并停在那里。

另一个string.h是由另一个程序员编写的,我试图使用他的库。

我认为首先搜索了标准位置。我在这里有点失落。我可能会遗漏一些非常明显的东西。

另外,有没有关于#include文件的规则有&lt;&gt;与他们周围的“”和编译器应该看的位置相比?

1 个答案:

答案 0 :(得分:0)

  1. 最后搜索标准位置。
  2. #include "blah"#include <blah>相同,除非在与尝试包含该文件的文件相同的目录中找到blah。 (除非您使用稀有和特定于gcc的-iquote选项)。
  3. 有关详细信息,请参阅here