ISO/IEC 9899:2011 条款6.4.7——头文件名
6.4.7 头文件名
语法
1、header-name:
< h-char-sequence >
" q-char-sequence "
h-char-sequence:
h-char
h-char-seqeunce h-char
h-char:
除了换行字符和 > 之外的任一源字符集的成员
q-char-sequence:
q-char
q-char-sequence q-char
q-char:
除了换行字符和 " 以外的源字符集中的任一成员
语义
2、头文件名两种形式中的序列以实现定义的方式被映射到头文件或外部源文件名,正如在6.10.2中所指定的。
3、如果字符 ' ,\ ," ,// ,或 /* 在 < 和 > 分隔符之间的序列中出现,那么行为是未定义的。类似的,如果字符 ' ,\ ," ,// ,或 /* 在 " 分隔符之间的序列中发生,那么行为也是未定义的。[注:从而,类似于转义序列的字符序列引发未定义的行为。]头文件名预处理标记仅在 #include 预处理指示符以及由实现定义的#pragma指示符内的区域中被识别。[注:对于头文件名预处理标记在一个 #pragma 指示符中使用的一个例子,见6.10.9]。
4、例 以下字符序列
0x3<1/a.h>1e2
#include <1/a.h>
#define const.member@$
形成以下预处理标记序列(每个单独的预处理标记左边用一个 { ,右边用一个 } 来分隔)。
{0x3}{<}{1}{/}{a}{.}{h}{>}{1e2}
{#}{include}{<1/a.h>}
{#}{define}{const}{.}{member}{@}{$}