C++ #包含具有相同名称的不同文件的include语句

C++ #包含具有相同名称的不同文件的include语句,c++,xcode,cocoa,C++,Xcode,Cocoa,在我的Xcode项目中,我添加了一个新的单元测试目标(使用GoogleC++测试框架)。我创建了一个新目录(例如/unittest/myproject/),在其中复制了源(.h/.cpp)文件,并为测试目的做了一些修改(例如将受保护的方法公开),并将其添加到单元测试目标中 但当我包含一个.h files main.cpp时,它指的是原始文件,而不是/unittest/myproject/中的文件。我还将标题搜索路径设置为“$(SRCROOT)/../../../unittest/myprojec

在我的Xcode项目中,我添加了一个新的单元测试目标(使用GoogleC++测试框架)。我创建了一个新目录(例如/unittest/myproject/),在其中复制了源(.h/.cpp)文件,并为测试目的做了一些修改(例如将受保护的方法公开),并将其添加到单元测试目标中


但当我包含一个.h files main.cpp时,它指的是原始文件,而不是/unittest/myproject/中的文件。我还将标题搜索路径设置为“$(SRCROOT)/../../../unittest/myproject”,但main.cpp仍然指向原始文件(命令+单击获取原始文件)。谁能告诉我我遗漏了什么?Xcode版本4.6.3有问题的头肯定存在于另一个目录中,Xcode将其视为包含路径

例如,该目录可以是:

  • /usr/include
  • /usr/local/include
以及其他,具体取决于您的环境设置

我建议您搜索所有具有此名称的文件,并查看系统将返回哪些目录

然后,您应该删除这个文件(如果不再使用),或者从XCode中设置的include path中删除它的父目录。这应该会有帮助。



还有一件事:

您还应检查,此文件使用哪种类型的包含:

  • 使用引号:
    #包括“header.h”
  • 使用括号:
    #包括
它依赖于编译器,但通常情况下,引号样式优先考虑与包含
#include
语句的文件位于同一目录中的标题

根据规范:

表单的预处理指令

#包括新行

在实现定义的位置序列中搜索标头 由<和> 分隔符,并导致该指令被整个 标题的内容如何指定位置或标题 已识别的是已定义的实现。

表单的预处理指令

#包括“q-char-sequence”新行

使指令的全部内容替换该指令 由“”之间的指定序列标识的源文件 分隔符。在指定的源文件中搜索 实现定义方式。如果不支持此搜索,或 如果搜索失败,将重新处理该指令,就像它读取一样

#包括新行

具有相同的包含序列(包括>个字符,如果有) 从最初的指令


您需要临时从/usr/local/include或其所在的任何默认搜索路径中删除原始文件,因为这些搜索路径包含在您自己的搜索路径之前。可能存在重复的