【问题标题】:How does #import search for files in Objective-C#import 如何在 Objective-C 中搜索文件
【发布时间】:2011-02-15 23:47:14
【问题描述】:

我只能找到关于该主题的一点点信息。我现在的理解是

#import <my.h> // searches in the system paths
#import "my.h" // searches in the same dir as the source file - is that right?

我有一个静态库,其中 .h 文件位于不同的位置。我可以让编译器像在 VC++ 中那样使用 #import "my.h" 搜索新文件夹中的 .h 文件吗?

【问题讨论】:

    标签: objective-c import


    【解决方案1】:

    在 Objective-C 中,#import 只是 #include,每个文件只包含一次。所以它会遵循#include的规则来搜索文件。

    &lt;…&gt; 表示系统标头和"…" 用户标头。预处理器将查看的路径取决于您的设置。对于 GCC,&lt;…&gt; 将查看:

     /usr/local/include
     <libdir/gcc/target/version>/include
     /usr/<target>/include
     /usr/include
    

    还有-I-F 开关添加的路径。 "…" 将在当前目录中查找,然后是 -iquote 开关添加的目录,然后是系统路径。

    详情请见http://gcc.gnu.org/onlinedocs/cpp/Search-Path.html

    【讨论】:

      【解决方案2】:

      你的理解是非常正确的,除了#import "my.h"在与源文件相同的目录中搜索,所有系统路径(#import &lt;my.h&gt;搜索的相同路径)。 p>

      我有一个静态库,其中 .h 文件位于不同的位置。我可以让编译器像在 VC++ 中那样使用 #import "my.h" 搜索新文件夹中的 .h 文件吗?

      是的。您必须将 -I 标志传递给 gcc。例如,如果你想搜索path/to/my-other-dir,你需要将-Ipath/to/my-other-dir 传递给gcc。如果您使用的是 Xcode,则可以使用目标的构建选项进行配置;在 Search Paths 下查找名为 Header Search Paths 的选项。

      【讨论】:

        【解决方案3】:
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-24
        • 2016-01-26
        • 1970-01-01
        • 1970-01-01
        • 2020-08-06
        • 2018-12-10
        相关资源
        最近更新 更多