Objective-C的编译过程是什么
我目前在编译Objective-C程序时遇到了一些链接器问题,我认为我无法解决这个问题的原因可能是由于对编译过程的无知 有人能给我一个在编译过程中采取的步骤的概述吗 这是我目前理解的过程:Objective-C的编译过程是什么,objective-c,compilation,Objective C,Compilation,我目前在编译Objective-C程序时遇到了一些链接器问题,我认为我无法解决这个问题的原因可能是由于对编译过程的无知 有人能给我一个在编译过程中采取的步骤的概述吗 这是我目前理解的过程: 编译器将包含的任何.h文件的内容复制到定义该文件的文件中。编译器不跟踪.h文件是否已经包含,因此它可能多次包含在项目中 任何.m文件都被编译成C等价代码(反过来又被编译成目标代码) 链接器在.h文件中的声明和目标代码中的相应函数之间生成链接。通过在同名的.m文件中查找函数来确定适当的函数 目标文件连接在一起形
丹尼你的想法或多或少是正确的。一些更正:
#include
不会检查它是否已经包含,但#import
会进行检查.m
不是先转换为C,然后再转换为目标代码。20年前就这样做了,但现在已经不是这样了。它只是直接编译成目标代码.h
和.m
使用不同的文件名。例如,您可以将.h
文件中声明的函数的实现拆分为多个.m
文件在任何情况下,您的结论都是正确的:您不应该将一个实现文件包括/导入到另一个实现文件中。您将遇到双重实现错误。啊哈,这太棒了;现在清楚多了,我已经解决了我的链接器问题!非常感谢!:)