在include指令中使用尖括号和引号有什么区别?
#include <filename>#include "filename"发布于 2008-08-22 01:40:27
不同之处在于预处理程序搜索要包含的文件的位置。
#include <filename>预处理器以实现定义的方式进行搜索,通常在编译器/IDE预先指定的目录中进行搜索。此方法通常用于包括C标准库的头文件和与目标平台相关联的其他头文件。#include "filename"预处理器还以实现定义的方式进行搜索,但通常用于包含程序员定义的头文件,并且通常包含与包含指令的文件相同的目录(除非给出绝对路径)。对于GCC来说,更完整的描述可以在GCC 关于搜索路径的文档中找到。
发布于 2008-09-16 21:06:23
了解的唯一方法是阅读您的实现文档。
C标准第6.10.2节第2至4段规定:
>分隔符之间唯一标识的头,并将该指令替换为标头的全部内容。如何指定位置或标头是实现定义的。"分隔符之间的指定序列标识。以实现定义的方式搜索命名的源文件。如果不支持此搜索,或者搜索失败,则将重新处理指令,就像它读取指令一样。
#包括新行
使用原始指令中相同的包含序列(如果有的话包括>字符)。include之后的预处理标记与正常文本一样被处理。(当前定义为宏名称的每个标识符都由其预处理令牌的替换列表替换。)所有替换后产生的指令应与前两种形式中的一种相匹配。实现定义了将<和>预处理令牌对或一对"字符之间的预处理令牌序列组合成单个标题名称预处理令牌的方法。定义:
>之外的源字符集的任何成员。"外,源字符集的任何成员发布于 2008-09-08 17:43:19
<和>之间的字符序列唯一地引用一个标题,它不一定是一个文件。实现可以随意使用字符序列。(然而,大多数情况下,只需将其视为文件名,并按照其他posts状态在包含路径中进行搜索。)
如果使用#include "file"表单,则实现首先查找给定名称的文件(如果支持的话)。如果不支持,或者搜索失败,则实现的行为就像使用了另一个(#include <file>)表单一样。
另外,当#include指令与上面的任何一种表单不匹配时,存在第三种表单并使用它。在这种形式中,对#include指令的“操作数”进行一些基本的预处理(例如宏展开),并且预期结果将与另外两种形式之一相匹配。
https://stackoverflow.com/questions/21593
复制相似问题