ISO/IEC 9899:2011 条款6.10.2——源文件包含
6.10.2 源文件包含
约束
1、一个#include指示符应该指定一个能被实现处理的头文件或源文件。
语义
2、一个预处理指示符如下形式
# include <h-char-sequence> new-line
搜索一个由实现定义的地方的序列,该地方用<和>分隔符之间所指定的序列唯一标识,并使得该指示符用头文件整个内容进行替换。这些地方如何指定或头文件标识符如何指定是由实现定义的。
3、一个预处理指示符的如下形式
# include "q-char-sequence" new-line
引发由"分隔符之间所指定的序列标识的整个源文件的内容来替换该指示符。命名源文件以一个实现定义的方式进行搜索。如果该搜索不被支持,或者该搜索失败,那么该指示符正如它用以下指示符所读到内容重新处理
# include <h-char-sequence> new-line
4、一个以下形式的预处理指示符
# include pp-tokens new-line
(不匹配之前两种形式的任何一个)是允许的。在指示符中include之后的预处理符记正如在正常文本中的一样。(当前被定义为一个宏名的每个标识符用其预处理符记替换列表进行替换)在所有替换之后的指示符结果应该匹配先前两种形式之一。[注:注意,邻近字符串字面量不被拼接为一单个字符串字面量(见5.1.1.2中的翻译阶段);从而,结果为两个字符串字面量的一个扩展是一个无效的指示符。]在<和>分隔符之间或在一对"之间的一序列预处理符记被结合为一单个头文件名预处理符记的方法,是实现定义的。
5、实现应该提供对由一个或多个非数字或数字,后面跟着一个点(.)以及一单个非数字所组成序列的唯一映射。第一个字符不应该是一个数字。实现可以忽略字母顺序区别的情况,并在点之前将映射限制到八位有效字符。
6、一个#include预处理指示符可以出现在一个已被读的源文件中,因为在另一个源文件里的一个#include预处理指示符,这取决于实现定义的嵌套限制。
7、例1 对#include预处理指示符最通常的用法如下:
#include <stdio.h>
#include "myprog.h"
8、例2 以下片段描述了用宏替换的#include指示符:
#if VERSION == 1
#define INCFILE "vers1.h"
#elif VERSION == 2
#define INCFILE "vers2.h" // 等等
#else
#define INCFILE "versN.h"
#endif #include INCFILE
结束。
ISO/IEC 9899:2011 条款6.10.2——源文件包含的更多相关文章
- ISO/IEC 9899:2011 条款6.10.1——条件包含
6.10.1 条件包含 约束 1.控制条件包含的表达式应该是一个整数常量表达式,除了:标识符(包括那些词法上与关键字相同的)被解析为以下所描述的:[注:因为控制常量表达式在翻译阶段4期间被计算,所以所 ...
- ISO/IEC 9899:2011 条款6.10——预处理指示符
6.10 预处理指示符 语法 1.preprocessing-file: groupopt group: group-part group group-part group-part: if-s ...
- ISO/IEC 9899:2011 条款6.10.3——宏替换
6.10.3 宏替换 约束 1.两个替换列表是相同的,当且仅当两个替换列表中的预处理符记都具有相同的数.次序.拼写,以及空白分隔符,这里所有的空白分隔符都认为是相同的. 2.当前被定义为一个类似对象的 ...
- ISO/IEC 9899:2011 条款3——术语、定义与符号
3. 术语.定义与符号 1.对于此国际标准的意图,应用了以下定义.其它术语是在用斜体类型或一个语法规则左侧出现的地方定义.在本国际标准中所显式定义的术语不被假定为对其它地方所定义的类似术语的隐式引用. ...
- ISO/IEC 9899:2011 条款5——5.2.1 字符集
5.2.1 字符集 1.两个字符集和它们相关联的依次顺序应该被定义:写在源文件中的集合(源字符集),以及在执行环境中被解释的集合(执行字符集).每个集合此外被划分为一个基本字符集,其内容由本子条款给出 ...
- ISO/IEC 9899:2011 条款6.4.2——标识符
6.4.2 标识符 6.4.2.1 通用 语法 1.identifier: identifier-nodigit identifier identifier-nondigit identifie ...
- ISO/IEC 9899:2011 条款6.4.3——通用字符名
6.4.3 通用字符名 语法 1.通用字符名: universal_character-name: \u hex-quad(四位十六进制数) \U hex-quad hex-quad hex-quad ...
- ISO/IEC 9899:2011 条款6.7.10——静态断言
6.7.10 静态断言 语法 1.static-assert_declaration: _Static_assert ( constant-expression , strin ...
- ISO/IEC 9899:2011 条款6.5.10——按位与操作符
6.5.10 按位与操作符 语法 1.AND-expression: equality-expression AND-expression equality-expression 约束 2.这些 ...
随机推荐
- GDI双缓冲
GDI双缓冲 翻译自Double buffering,原作者Dim_Yimma_H 语言:C (原文写的是C++,实际上是纯C) 推荐知识: 构建程序 函数 结构体 变量和条件语句 switch语句 ...
- Kali下的内网劫持(二)
前一小节说到在Kali下可以进行捕获客户端的图片,那么同样的,客户端访问的网页也是可以捕获的: . 以上可以看出监听完毕,那么在被监听端访问阿里云的一个网站: 在监听端用urlsnart这个工具进行捕 ...
- 使用TFT LCD制作Arduino触摸屏计算器
Arduino开发板总是可以帮助我们轻松地构建一个项目,并使其看起来更具有吸引力.对一个带有触摸功能的液晶显示屏进行编程听起来可能是一件复杂的工作,但是通过使用Arduino库和扩展模块可以使得这项工 ...
- python代码规范 自动优化工具Black
自动优化工具Black 在众多代码格式化工具中,Black算是比较新的一个,它***的特点是可配置项比较少,个人认为这对于新手来说是件好事,因为我们不必过多考虑如何设置Black,让 Black 自己 ...
- waitpid()函数
waitpid函数 作用同于wait,但可指定pid进程清理,可以不阻塞. pid_t waitpid(pid_t pid,int *status,int options);成功:返回清理掉的子进程I ...
- 使用js对社会信用代码进行正则验证
注:参考了该博客(https://blog.csdn.net/qq_37142340/article/details/80695187)进行了一些修改,本文验证使用在微信小程序上. 直接贴代码: va ...
- Alpha冲刺随笔八:第八天
课程名称:软件工程1916|W(福州大学) 作业要求:项目Alpha冲刺(十天冲刺) 团队名称:葫芦娃队 作业目标:在十天冲刺里对每天的任务进行总结. 随笔汇总:https://www.cnblogs ...
- IIS 使用 web.config 实现从 http 自动301跳转到 https 的方法
现在很多网站为了安全,开启了 SSL 连接,那么开启 SSL 连接之后,如何将对应的 http 访问自动跳转到 https 上呢?之前介绍了 IIS 用 web.config 做域名的301跳转的方法 ...
- 铺砖头问题(完美)——爆搜&&插头DP
题意 给定一个 $n \times m$ 的格子,每个格子被染成了黑色或白色.现在要用 $1 \times 2$ 的砖块覆盖这些格子,要求块与块之间互不重叠,且覆盖了所有白色的格子,但不覆盖任意黑色格 ...
- The 10th Shandong Provincial Collegiate Programming Contest 2019山东省赛游记+解题报告
比赛结束了几天...这篇博客其实比完就想写了...但是想等补完可做题顺便po上题解... 5.10晚的动车到了济南,没带外套有点凉.酒店还不错. 5.11早上去报道,济南大学好大啊...感觉走了一个世 ...