【发布时间】:2015-03-03 22:24:29
【问题描述】:
我正在尝试使用 Xcode 6.1.1 构建我为 Windows、OSX 下的 Visual Studio 完成的项目。
我遇到了一个问题,文件中需要包含#include <string.h>。但是,在与执行此操作的文件相同的文件夹中,还有一个名为 string.h 的文件。
在我的 Visual Studio 项目下,这仍然解析文件,首先搜索系统路径。
在 Xcode 项目中,我确保在“用户标题搜索路径”下设置了我自己的路径 - Xcode 扩展到正确的路径。我还将“始终搜索用户路径”设置为否 - 根据文档,应首先搜索系统路径: https://developer.apple.com/library/mac/documentation/DeveloperTools/Reference/XcodeBuildSettingRef/1-Build_Setting_Reference/build_setting_ref.html#//apple_ref/doc/uid/TP40003931-CH3-SW110
但由于某种原因,#include <string.h> 似乎被视为#include "string.h"。
配置是在项目中定义的,我确保目标不会覆盖它。
这是系统包含<>的一些Xcode/OSX东西吗?先搜索包含文件的路径?
我的本地string.h 文件位于ruby/api/string.h,相对于我的用户标头搜索路径中的包含路径。
https://gist.github.com/thomthom/034b539bede38dd68261 的结果:
https://gist.github.com/thomthom/034b539bede38dd68261
【问题讨论】:
-
也许可以尝试使用
#import <string.h>,或者将项目中的文件string.h重命名为其他名称。<>vs""通常表示标准库路径或用户头路径。 -
#import不是 Objective C 的东西吗?虽然重命名可以解决它 - 在我看来这是错误的行为,我更愿意找到问题的根源而不是重命名一堆文件。 -
大部分是的;不过,它可以与
C++、C等一起使用。我对您的问题的困惑是您是否尝试在项目中使用标准库或特别是“string.h” - 或两者兼而有之? -
两者 - 我需要我自己的
string.h我使用#include "ruby/api/string.h"- 当我需要系统标头(实际上它被我包含的 Ruby 标头使用)时使用:#include <string.h>但是后者在 Xcode 中不起作用 - 而它在 Visual Studio 中起作用。 Xcode 似乎会在与包含文件相同的文件夹中查找#include <>的文件,然后再查看系统文件夹。 -
<string.h>被我正在使用的第三方库使用 - 无法更改。将我自己的“ruby/api/string.h”更改为“ruby/api/string.hpp”确实可以解决名称冲突。
标签: c++ c xcode6 include-path