我正在学习目标c中#include和#import之间的差异。我从互联网上搜索并了解到,#include可能导致递归问题。如果使用#import,则可以避免此问题。但我不明白这一点,首先是什么是递归包含,然后#import如何防止这个问题发生?
答案 0 :(得分:0)
递归是以自我相似的方式重复项目的过程。
与在其他函数中调用函数的方式相同,您可以在其自身内部调用函数。调用自身的函数称为递归函数。递归很重要,因为您可以通过解决类似的子问题来解决一些问题。递归解决方案通常具有较少的代码,并且如果您解决的问题本质上是递归的,则它们的迭代等价物更优雅。
#import和#include之间有什么区别?
#import指令已添加到Objective-C,作为#include的改进版本。然而,它是否得到改善仍然是一个争论的问题。 #import确保文件只被包含一次,这样你就不会遇到递归包含问题。然而,大多数体面的头文件无论如何都能保护自己免受此类攻击,所以它并没有那么大的好处。
基本上,由您决定要使用哪个。我倾向于#import标头用于Objective-C事物(比如类定义等)和#include标准C我需要的东西。例如,我的一个源文件可能如下所示:
#import <Foundation/Foundation.h>
#include <asl.h>
#include <mach/mach.h>
来源:What is the difference between #import and #include in Objective-C?