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.这些 ...
随机推荐
- svn 没有killall命令的解决方法 -bash: killall: command not found
debian.ubuntu系统下: apt-get install psmisc centos 下: yum install psmisc
- Navicat Premium 12破解激活11
下载Navicat Premium 12并安装: 百度云下载:Navicat Premium 12注册机 链接:https://pan.baidu.com/s/1UcA5yXjtdfXlBZI-2 ...
- JS数组扁平化(flat)
需求:多维数组=>一维数组 let ary = [1, [2, [3, [4, 5]]], 6]; let str = JSON.stringify(ary); 第0种处理:直接的调用 arr_ ...
- Oracle锁表与解锁 对象锁与解锁
阅读目录 锁表与解锁 查看锁表进程SQL语句 解锁 对象锁与解锁 回到顶部 锁表与解锁 查看锁表进程SQL语句 select * from v$session t1, v$locked_object ...
- pipy配置镜像源
新电脑第一次使用使用pip命令下载贼慢 我们需要使用国内pipy镜像,参考如下 https://mirrors.tuna.tsinghua.edu.cn/help/pypi/ 所以只要设置一下就行了: ...
- jQ native 构造函数
- 字节序 —— Big Endian 和 Little Endian
一.字节序 字节序指的是多字节的数据在内存中的存放顺序 内存有高地址端与低地址端.其中,低地址端既可以存放高位字节,也可以存放低位字节. Big Endian 是指低地址端 存放 高位字节. Litt ...
- UVa11542Squre——异或方程组&&高斯消元法
题意 给出 $n$ 个整数,从中选出1个或多个,使得选出的整数乘积是完全平方数.一共有多少种选法?($1 \leq n \leq 100$,$1 \leq a_i \leq 10^{15}$ 且不含大 ...
- 11-Flutter移动电商实战-首页_屏幕适配方案和制作
1.flutter_ScreenUtil插件简介 flutter_ScreenUtil屏幕适配方案,让你的UI在不同尺寸的屏幕上都能显示合理的布局. 插件会让你先设置一个UI稿的尺寸,他会根据这个尺寸 ...
- LeetCode 1011. Capacity To Ship Packages Within D Days
原题链接在这里:https://leetcode.com/problems/capacity-to-ship-packages-within-d-days/ 题目: A conveyor belt h ...