下面提到的 `#import` 指令有啥问题?

Posted

技术标签:

【中文标题】下面提到的 `#import` 指令有啥问题?【英文标题】:What is the problem with the `#import` directive mentioned below?下面提到的 `#import` 指令有什么问题? 【发布时间】:2020-04-24 18:19:30 【问题描述】:

Here你会发现以下语句:

#import 不是一个设计良好的功能。它要求用户 头文件知道它应该只包含一次。

这有什么问题?

【问题讨论】:

这是一篇有偏见的文章,给出出处也就不足为奇了。 #import 是在很久以前为 NeXTSTEP 设计的,从未打算在 Objective-C 之外移植。 【参考方案1】:

这篇文章非常准确地说明了这个问题:如果您编写一个标头的目的是与 #import 一起使用(也就是没有任何包含防护/等),那么您期望该用户头文件使用#import 或其他方式来确保该文件只包含一次。如果用户不知道这一点,或者如果标头与不支持#import 的编译器一起使用(或使用该命令执行其他操作),那么您的标头将无法正常工作。而且,特别是在有很多人参与的大型项目中,很有可能有一天有人会不小心 #include 那个头文件,或者该项目在未来某个时候被移植到不同的编译器。

【讨论】:

以上是关于下面提到的 `#import` 指令有啥问题?的主要内容,如果未能解决你的问题,请参考以下文章

在引用Angular指令之前放置`data-`有啥好处[重复]

下面程序为啥不行??jmp指令不能越段转移吗??有啥方法越段呢??

mtk平台手机都有啥快捷指令

组件和指令有啥区别?

组件和指令有啥区别?

服务、指令和模块有啥区别?