Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective-C是否加载整个导入的文件?_Objective C_Compiler Construction_Header_Llvm - Fatal编程技术网

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中查看预处理的输出。