• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

[复制链接]
菜鸟教程小白 发表于 2022-12-12 10:46:43 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

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

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

我想知道我们是否可以在混合代码中完全使用导入?



Best Answer-推荐答案


这个问题在 Stackoverflow 中有很长的答案:

进口

在 C 语言中,#include 预编译指令总是导致文件的内容在该点插入到源代码中。 Objective-C 具有等效的 #import 指令,只是每个文件在每个编译单元中只包含一次,从而无需包含保护。

#import 和#include

“#import”Objective-C/Objective-C++ 头文件和#include C/C++ 头文件。 根据您所包含的 header 语言在#import 和#include 之间进行选择。

包含使用 Objective-C 或 Objective-C++ 的 header 时,请使用 #import。 包含标准 C 或 C++ header 时,请使用#include。 header 应提供自己的#define 保护。 一些 Objective-C 头文件缺少#define 保护,并且期望只包含在#import 中。由于 Objective-C 头文件可能只包含在 Objective-C 源文件和其他 Objective-C 头文件中,因此全面使用 #import 是合适的。

没有任何 Objective-C 的标准 C 和 C++ header 可以预期包含在普​​通 C 和 C++ 文件中。由于标准 C 或 C++ 中没有#import,因此在这些情况下,#include 将包含此类文件。在 Objective-C 源文件中为它们使用#include 也意味着这些 header 将始终以相同的语义包含。

此规则有助于避免跨平台项目中的意外错误。引入新的 C 或 C++ 头文件的 Mac 开发人员可能会忘记添加 #define 保护,如果新头文件包含在 #import 中,这不会在 Mac 上造成问题,但会破坏使用 #include 的其他平台上的构建。通过在所有平台上使用 #include 保持一致意味着编译更有可能在任何地方成功或在任何地方失败,并避免文件仅在某些平台上工作的挫败感。

#import <Cocoa/Cocoa.h>
#include <CoreFoundation/CoreFoundation.h>
#import "GTMFoo.h"
#include "base/basictypes.h"

#import 指令作为#include 的改进版本添加到Objective-C。然而,它是否得到改进仍然是一个争论的问题。 #import 确保文件只包含一次,这样您就不会遇到递归包含的问题。但是,无论如何,大多数体面的头文件都会保护自己免受这种情况的影响,因此它并没有太大的好处。

基本上由您决定要使用哪个。我倾向于为 Object-C 的东西(如类定义等)#import header 和我需要的#include 标准 C 的东西。

看看这个链接,有更多的答案:

What is the difference between #import and #include in Objective-C?

Difference Between includes and imports [duplicate]

外部文档链接:Objective-C Style Guide

The difference between #import, #include and @class in Objective C

关于ios - 对于混合代码,何时使用包含,何时使用导入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16291206/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap