Objective-C是否加载整个导入的文件?
我试图理解在编译时和运行时,导入的文件会发生什么Objective-C是否加载整个导入的文件?,objective-c,compiler-construction,header,llvm,Objective C,Compiler Construction,Header,Llvm,我试图理解在编译时和运行时,导入的文件会发生什么 #import“file.h”指令是否将整个file.m复制并粘贴到当前文件中?或者它只是指定该文件的位置并在实例化时创建必要的属性 #import file.h语句是否将整个文件.m复制并粘贴到当前文件中 它不是一个语句,而是一个预处理器指令 文件名周围缺少引号或尖括号 #导入“file.h”确实将整个file.h文件复制到当前文件中,以代替此指令。但是,它对file.m没有任何作用 #import file.h语句是否将整个文件.m复制并粘贴
#import“file.h”
指令是否将整个file.m
复制并粘贴到当前文件中?或者它只是指定该文件的位置并在实例化时创建必要的属性
#import file.h
语句是否将整个文件.m复制并粘贴到当前文件中
#导入“file.h”
确实将整个file.h
文件复制到当前文件中,以代替此指令。但是,它对file.m
没有任何作用#import file.h
语句是否将整个文件.m复制并粘贴到当前文件中
#导入“file.h”
确实将整个file.h
文件复制到当前文件中,以代替此指令。但是,它对file.m
没有任何作用导入由C、C++和Objic C中的预处理器处理,为编译器创建一个大文件。每个*.m、*.c、*.cpp文件都将获得所有导入
您可以在命令行上使用-E标志编译代码,以便在添加所有#导入后查看结果 此外,这个问题详细介绍了“包含”与“导入”的关系,因此它可能会让您更深入地了解: 正如您所想象的,有大量额外的导入会降低编译速度。Jetbrain的AppCode具有优化导入的功能:< P>导入由C、C++和Objic C中的预处理器处理,为编译器创建一个大文件。每个*.m、*.c、*.cpp文件都将获得所有导入 您可以在命令行上使用-E标志编译代码,以便在添加所有#导入后查看结果 此外,这个问题详细介绍了“包含”与“导入”的关系,因此它可能会让您更深入地了解: 正如您所想象的,有大量额外的导入会降低编译速度。Jetbrain的AppCode具有优化导入的功能:
为正确语法而编辑。现在,编译器如何加载
方法fromfile
?它是在何时查找定义并在调用时创建它,还是在声明#import指令时它就已经在内存中了?@123我不明白这一点。编译器只会获取您提供给它的任何文件,并从中生成机器代码。(更具体地说,对象文件是从包含实际代码的.m
和.c
文件生成的。.h
文件通常只包含声明和类型定义,不会生成可执行代码。)然后链接器获取对象文件并从中生成可执行文件。但这是一种后来完全不同的状态,严格地说是在预处理阶段之后达到的。为正确的语法而编辑。现在,编译器如何加载方法fromfile
?它是在何时查找定义并在调用时创建它,还是在声明#import指令时它就已经在内存中了?@123我不明白这一点。编译器只会获取您提供给它的任何文件,并从中生成机器代码。(更具体地说,对象文件是从包含实际代码的.m
和.c
文件生成的。.h
文件通常只包含声明和类型定义,不会生成可执行代码。)然后链接器获取对象文件并从中生成可执行文件。但这是一种更晚的完全不同的状态,严格来说是在预处理阶段之后达到的。注意,您还可以通过选择产品>生成输出>预处理文件在Xcode中查看预处理的输出。注意,您还可以通过选择产品>生成输出>预处理文件在Xcode中查看预处理的输出。