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

时间:2015-04-20 10:44:18

标签: c++ xcode cocoa

在我的Xcode项目中,我添加了一个新的单元测试目标(使用谷歌C ++ _测试框架)。我创建了一个新目录(例如/ unittest / myproject /),其中我复制了源(.h / .cpp)文件,并进行了一些修改(例如,将受保护的方法设置为public)以用于测试目的并添加到单元测试目标。

但是当我包含.h文件main.cpp时,它指的是原始文件而不是文件,它位于/ unittest / myproject /中。此外,我已将标题搜索路径设置为" $(SRCROOT)/../../ unittest / myproject"但仍然main.cpp指的是原始文件(Command + click转到原始文件)。任何人都可以建议我缺少什么? Xcode版本4.6.3

1 个答案:

答案 0 :(得分:0)

有问题的标题肯定存在于另一个目录中,XCode将其视为包含路径。

这样的目录可以是,例如:

  • /usr/include
  • /usr/local/include

和其他人,具体取决于您的环境设置。

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

然后,您应该删除此文件[s](如果它不再使用)或从XCode中设置的包含路径中删除其父目录。这应该有所帮助。



还有一件事:

您还应该检查您对此文件使用的包含类型:

  • 使用引号:#include "header.h"
  • 使用括号:#include <header.h>

它依赖于编译器,但通常是引号样式优先化标头,它们与包含#include语句的文件存在于同一目录中。

来自规范:

  

表单

的预处理指令      

# include <h-char-sequence> new-line

     

在一系列实现定义的地方搜索标题   通过&lt;之间的指定序列唯一地识别。和&gt;   分隔符,并导致整个指令的替换   标题的内容。 如何指定地点或标题   确定是实施定义的。

     

表单

的预处理指令      

# include "q-char-sequence" new-line

     

导致该指令的全部内容被替换   源文件由&#34;之间的指定序列标识。   分隔符。搜索指定的源文件中的   实现定义的方式。如果不支持此搜索,或   如果搜索失败,则重新处理该指令,就像它读取

一样      

# include <h-char-sequence> new-line

     

包含相同的序列(包括&gt;字符,如果有的话)   来自原始指令。