菜鸟教程小白 发表于 2022-12-12 10:46:43

ios - 对于混合代码,何时使用包含,何时使用导入?


                                            <p><p>对于混合代码,我在想什么时候用include,什么时候用import。</p>

<p>我检查了一些文档,导入比包含更好,因为它可以消除使用包含保护(pragma once)的需要。</p>

<p>我想知道我们是否可以在混合代码中完全使用导入?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>这个问题在 Stackoverflow 中有很长的答案:</p>
<h1>进口</h1>
<p><strong>在 C 语言中,#include 预编译指令总是导致文件的内容在该点插入到源代码中。 Objective-C 具有等效的 #import 指令,只是每个文件在每个编译单元中只包含一次,从而无需包含保护。</strong></p>
<p><strong>#import 和#include</strong></p>
<p>“#import”Objective-C/Objective-C++ 头文件和#include C/C++ 头文件。
根据您所包含的 header 语言在#import 和#include 之间进行选择。</p>
<p>包含使用 Objective-C 或 Objective-C++ 的 header 时,请使用 #import。
包含标准 C 或 C++header 时,请使用#include。 header 应提供自己的#define 保护。
一些 Objective-C 头文件缺少#define 保护,并且期望只包含在#import 中。由于 Objective-C 头文件可能只包含在 Objective-C 源文件和其他 Objective-C 头文件中,因此全面使用 #import 是合适的。</p>
<p>没有任何 Objective-C 的标准 C 和 C++header 可以预期包含在普​​通 C 和 C++ 文件中。由于标准 C 或 C++ 中没有#import,因此在这些情况下,#include 将包含此类文件。在 Objective-C 源文件中为它们使用#include 也意味着这些 header 将始终以相同的语义包含。</p>
<p>此规则有助于避免跨平台项目中的意外错误。引入新的 C 或 C++ 头文件的 Mac 开发人员可能会忘记添加 #define 保护,如果新头文件包含在 #import 中,这不会在 Mac 上造成问题,但会破坏使用 #include 的其他平台上的构建。通过在所有平台上使用 #include 保持一致意味着编译更有可能在任何地方成功或在任何地方失败,并避免文件仅在某些平台上工作的挫败感。</p>
<pre><code>#import &lt;Cocoa/Cocoa.h&gt;
#include &lt;CoreFoundation/CoreFoundation.h&gt;
#import &#34;GTMFoo.h&#34;
#include &#34;base/basictypes.h&#34;
</code></pre>
<p>#import 指令作为#include 的改进版本添加到Objective-C。然而,它是否得到改进仍然是一个争论的问题。 #import 确保文件只包含一次,这样您就不会遇到递归包含的问题。但是,无论如何,大多数体面的头文件都会保护自己免受这种情况的影响,因此它并没有太大的好处。</p>
<p>基本上由您决定要使用哪个。我倾向于为 Object-C 的东西(如类定义等)#importheader 和我需要的#include 标准 C 的东西。</p>
<p>看看这个链接,有更多的答案:</p>
<p> <a href="https://stackoverflow.com/questions/439662/what-is-the-difference-between-import-and-include-in-objective-c" rel="noreferrer noopener nofollow">What is the difference between #import and #include in Objective-C?</a> </p>
<p> <a href="https://stackoverflow.com/questions/13250253/difference-between-includes-and-imports" rel="noreferrer noopener nofollow">Difference Between includes and imports </a> </p>
<p>外部文档链接:<a href="http://google-styleguide.googlecode.com/svn/trunk/objcguide.xml#_import_and__include" rel="noreferrer noopener nofollow">Objective-C Style Guide</a> </p>
<p> <a href="http://cafe-o-babe.blogspot.com/2010/06/difference-between-import-include-and.html" rel="noreferrer noopener nofollow">The difference between #import, #include and @class in Objective C</a> </p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 对于混合代码,何时使用包含,何时使用导入?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/16291206/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/16291206/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 对于混合代码,何时使用包含,何时使用导入?