对于混合代码,何时使用include,何时使用import? include和import都是用于将外部代码引入到当前代码中的关键字。它们的使用取决于你引入的是什么类型的代码。 通常情况下,使用include关键字将其他文件中的代码直接包含到当前文件中。这些文件可以是HTML、CSS、JavaScript等类型的文件。使用include可以在当前文件中直接使用被引入文件中的代码。 而import关键字主要用于导入其他模块或库中的代码。它通常用于引入和使用其他编程语言中的函数、类、变量等。import
对于混合代码,何时使用include,何时使用import? include和import都是用于将外部代码引入到当前代码中的关键字。它们的使用取决于你引入的是什么类型的代码。 通常情况下,使用include关键字将其他文件中的代码直接包含到当前文件中。这些文件可以是HTML、CSS、JavaScript等类型的文件。使用include可以在当前文件中直接使用被引入文件中的代码。 而import关键字主要用于导入其他模块或库中的代码。它通常用于引入和使用其他编程语言中的函数、类、变量等。import
对于混合代码,我想知道何时使用include和何时使用import。
我查阅了一些文档,发现import比include更好,因为它可以消除使用include guard(pragma once)的需要。
我想知道我们在混合代码中是否可以完全使用import?
#include和#import在Objective-C中的使用是有区别的。#include是C/C++语言中的预处理指令,它会将指定文件的内容插入到源代码中。而#import是Objective-C中的预处理指令,它与#include类似,但是每个文件只会被编译单元包含一次,避免了使用include guards的需要。
在选择使用#include还是#import时,需要根据要包含的头文件的语言类型进行选择:
- 当包含的头文件使用Objective-C或Objective-C++时,使用#import。
- 当包含的头文件使用标准的C或C++时,使用#include,并且该头文件应该提供自己的#define guard。
一些Objective-C头文件没有使用#define guard,并且只能通过#import来包含。由于Objective-C头文件只能被Objective-C源文件和其他Objective-C头文件包含,所以在整个项目中统一使用#import是合适的。
对于没有Objective-C内容的标准C和C++头文件,可以期望它们被普通的C和C++文件包含。由于标准C和C++中没有#import,所以在Objective-C源文件中使用#include来包含这些头文件,保持了头文件在不同语言环境下的一致性。
这个规则有助于避免跨平台项目中的错误。如果一个Mac开发人员引入了一个新的C或C++头文件却忘记添加#define guard,如果这个新的头文件在Mac上使用#import包含,不会导致问题,但是在其他平台上使用#include就会导致构建失败。在所有平台上都使用#include可以保证编译在所有地方成功或者失败,并避免了文件只在某些平台上工作的困扰。
在实际使用中,可以根据个人偏好来决定使用#import还是#include。一般来说,使用#import来包含Objective-C相关的内容(如类定义等),使用#include来包含需要的标准C库。
#import是Objective-C中对#include的改进版本,它确保了文件只会被包含一次,避免了递归包含的问题。然而,大多数良好的头文件本身已经保护了递归包含的问题,所以这并不是一个很大的优势。因此,使用#include还是#import可以根据个人的喜好来决定。
更多关于#include和#import的区别可以参考以下链接:
- [What is the difference between #import and #include in Objective-C?](https://stackoverflow.com/questions/439662)
- [Difference Between includes and imports [duplicate]](https://stackoverflow.com/questions/13250253)
- [Objective-C Style Guide](http://google-styleguide.googlecode.com/svn/trunk/objcguide.xml#_import_and__include)
- [The difference between #import, #include and in Objective C](http://cafe-o-babe.blogspot.com/2010/06/difference-between-import-include-and.html)