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.这些 ...
随机推荐
- 查看Windows系统进程(PID)
语法:tasklist /svc 作用:打印系统进程,并显示其对应PID,可用来跟踪进程并根据PID来进行关闭.
- Istio1.1.8部署
istio安装 整体步骤: 下载 Istio 发行版. 完成必要的 Kubernetes 平台设置 检查对 Pod 和服务的要求. 安装高于 2.10 版本的 Helm 客户端. 安装之前的下载和准备 ...
- ubuntu18.04搭建NFS服务器
系统环境: NFS服务器操作系统: ubuntu18.04 server lts NFS服务器IP: 192.168.1.164 注: NFS服务器 指的是 待安装 NFS服务 的机器(物理机或者虚 ...
- Centos7安装配置Nginx_笔记
从Nginx官方网站下载稳定的主要分支版本.然后解压开来. 在Linux中需要使用编译工具编译安装Nginx. 首先安装“Development Tools”工具,包含了所有编译Nginx所需的依赖工 ...
- thinkphp5.x命令执行漏洞复现及环境搭建
楼主Linux环境是Centos7,LAMP怎么搭不用我废话吧,别看错了 一.thinkphp5.X系列 1.安装composer yum -y install composer 安装php拓展 yu ...
- CentOS7.5安装SVN和可视化管理工具iF.SVNAdmin
一.安装Apache和PHP 由于iF.SVNAdmin使用php写的,因此我们需要安装php yum install httpd php 二.安装SVN服务器(其中,mod_dav_svn是Apac ...
- linux Crontab定时备份项目案例
首先先写好备份的脚本(拷贝的命令) #bash/bin cd /finance/tomcat8-finance/wtpwebapps tar -czf /finance/webapp_backup/* ...
- 机房断电,导致xfs文件系统损坏
记一次机房断电,导致xfs文件系统损坏处理方法 挂载时报以下错误: mount: mount /dev/sdb on /dev/sdb failed: Structure needs cleaning ...
- Import declarations are not supported by current JavaScript version
原因为:不支持当前的js版本,在perference中进行设置javascript的版本即可 注意:在perference中进行更改,而不是defeaut perference,快捷键操作为:comm ...
- 基金名称中的ABC是什么意思,我们该如何选择?
作者:牛大 | 公众号:定投五分钟 大家好,我是牛大.每天五分钟,投资你自己:坚持基金定投,终会财富自由! 大家经常会看到基金名称后面有字母ABC,这个表示什么意思呢,以及我们该如何选择呢?今天牛大给 ...