最近在接触C++编程时几次遇到#include <> 和 #include " "使用上的编译错误,就想着了解一下这两种用法的区别:
原文见:GCC说明
include 语法:
使用预处理指令包含用户和系统头文件#包括”。它有两个变种:
第一种:
#include <file>
此变体用于系统头文件。它在标准的系统目录列表中搜索名为file的文件。您可以使用 - I 选项将目录添加到以下系统目录列表中 (请参阅调用)。
第二种:
#include "file"
此变体用于您自己的程序的头文件。它首先在包含当前文件的目录中搜索名为file的文件,然后在quote目录中搜索,然后搜索用于<file>的相同目录 。你可以通过- iquote选项将目录预置到quote目录列表里。
参数'#include',无论是用引号还是尖括号分隔,都表现为字符串常量,因为无法识别注释,并且不会扩展宏名称。因此,include<x/*y>指定包含名为x/*y的系统头文件。
但是,如果文件中出现反斜杠,则它们被视为普通文本字符,而不是转义字符。没有处理适合C中字符串常量的字符转义序列。因此,#include "x\n\\y"
指定包含三个反斜杠的文件名。(有些系统解释'\'作为路径名分隔符。所有这些也解释'/' 一样的方法。它只最便于使用"/"。)
如果文件名后面的行上有任何内容(注释除外),则会出错。