头文件名
根据ISO/IEC 9899:2018标准第6.4.7 Header names节,C语言中头文件名具有以下两种形式:
< h-char-sequence > " q-char-sequence "
h-char-sequence序列中的字符可以是源字符集中除换行符和>字符外的任何字符;但如果在h-char-sequence序列中出现'、\、"、//、/*字符,其行为是未定义的。q-char-sequence序列中的字符可以是源字符集中除换行符和"字符外的任何字符;但如果在q-char-sequence序列中出现'、\、//、/*字符,其行为是未定义的。
文件名中的序列以实现定义的方式映射到头文件名或者外部源文件名。头文件名预处理标记仅在#include预处理指令中和在#pragma指令实现定义的位置被识别。
使用#include指令包含文件存在以下两种形式:
① #include <h-char-sequence> new-line
其中new-line为换行符。执行该指令时,先在实现定义的位置搜索由h-char-sequence序列标识的头文件(以Unix系统为例,将搜索目录/usr/include。);然后用该头文件的内容替换该指令。这种形式用于包含标准库头文件以及实现版本提供的头文件,例如:
#include <stdio.h>
② #include "q-char-sequence" new-line
执行该指令时,先在实现定义的位置(该位置通常为当前目录。)搜索由q-char-sequence序列标识的源文件;然后用源文件的内容替换该指令。如果实现不支持此类搜索或者搜索失败,该指令像读取以下指令一样重新处理。
#include <h-char-sequence> new-line
h-char-sequence序列与原指令中q-char-sequence序列具有相同的字符;如果q-char-sequence序列中存在>字符,h-char-sequence序列也将存在>字符。
这种形式通常用于程序员编写的文件,例如:
#include "myHeader.h"