#import使用尖括号<>和引号“”
我想知道是什么决定当你在Objective-C中导入文件时是否允许使用<Header.h>
或"Header.h"
。 到目前为止,我的观察一直是,在项目中使用引号""
来标识实现源,而当引用一个库或框架时,尖括号<>
。
但是,究竟是如何工作? 我需要做些什么来让我自己的class级使用括号? 现在Xcode不会允许我为自己的头文件做这件事。
另外,通过查看一些框架头文件,我看到这些头文件使用<frameworkname/file.h>
相互引用。 这是如何工作的? 它看起来很像Java中的包,但据我所知,在Objective-C中没有包。
Objective-C与C / C ++有此共同之处; 引用的forms是“本地”包括文件(您需要指定当前文件的相对path,例如#include "headers/my_header.h"
),而括号forms是“全局”包括 -那些在包含path的地方被传递给编译器(例如#include <math.h>
)。
所以为了让你自己的头文件使用< >
而不是" "
你需要传递头文件目录的相对path或绝对path给编译器。 有关如何在Xcode中执行此操作的信息,请参阅“如何为Xcode添加全局包含path” 。
有关更多信息,请参阅此MSDN页面 。
在C中,约定是在<>括号中的头文件在用户或本地目录的“系统”目录和“”中search。
我猜系统和本地的定义有些模糊。 我相信它看起来在包含path或CPPFLAGS系统目录和本地目录或目录指定与-I编译器search“header.h”文件。
我假设Objective-C的工作原理类似。
要使用“<>”导入自己的类,必须将头文件(* .h)放在编译器的lib文件夹中,或者将SYSTEM VARIABLES指向您的lib文件夹。
只是偶然发现了同样的问题,Xcode有两种searchpath:
User Header Search Paths Header Search Paths
如果您将自己的包含文件夹添加到标题searchpath中,则可以使用斜angular括号而不会有任何问题。
或者将Always Search User Path
设置为YES
以便可以使用尖括号。
什么是头文件? 头文件包含函数和variables的定义,可以通过使用预处理器#include语句将它们合并到任何C程序中。 每个编译器都提供了标准头文件,涵盖了一系列的区域,string处理,math,数据转换,打印和读取variables。 除了#include它包含了像scanf()这样的input信息,还有像printf()这样的函数在编译器中的输出。
包括
1)#INCLUDE: – 在主要function的处理之前是一个预处理器。 预处理器的主要工作是初始化程序的环境,也就是带有头文件的程序。 2).h: – (头文件)头文件是扩展名为.h的文件,它包含C函数声明和macros定义,并在几个源文件之间共享。 问)有两种types的头文件:程序员写的文件和编译器附带的文件? A)在尖括号中angular括号的forms是“全局的”包括 – 在包含path上find的那些传递给编译器的东西(例如#include)它用于编译器中定义的库函数的使用。 在C中的惯例是在<>括号中的头文件在'系统'目录中searchB)引用标记: – “header.h”引用的forms是“本地”包括文件(你需要指定相对path当前文件,例如#include“headers / my_header.h”)在C中,约定是在用户或本地目录中search“”中的头文件。 在其中包含一个文件(FILE INCLUSION)。 它可以在两种情况下使用:情况1:如果我们有一个非常大的程序,代码是最好的分成几个不同的文件,每个包含一组相关的function。 案例2:我们编写的所有程序中至多需要一些函数和微观定义。 防爆