GB T 15272-1994 程序设计语言C.pdf
《GB T 15272-1994 程序设计语言C.pdf》由会员分享,可在线阅读,更多相关《GB T 15272-1994 程序设计语言C.pdf(190页珍藏版)》请在麦多课文档分享上搜索。
1、中华人民共和国国家标准程序设计语言发布实施国家技术监督局发布中华人民共和国国家标准程序设计语言国家技术监督局批准实施本标准等同采用了国际标准程序设计语言引言随着新设备和扩展字符集的引入标准中可能会增加新的特征在语言和库两章中的有关条文对实现者和程序员使用尽管本身是合法的但可能与未来增加的内容相冲突的特征给出了告诫有一些特征属于将逐渐废弃的这意味着在未来的标准版本中可能会撤消这些特征本标准文本中仍然保留它们的原因是这些特征已使用得很广泛但不鼓励在新的实现中使用这些与实现有关的特征或在新的程序中使用这些语言特征见条或库特征见条本标准文本分为下列四个主要部分引言和基本元素翻译与执行程序的环境的特性语
2、言的语法约束与语义库设施在有些条文中给出了示例以说明所描述的构件的可能形式加注以强调在相应条文或标准的其他地点所描述的规则的作用涉及其他相关条文时给出了引用附录部分总结了包含在标准中的信息引言示例注引用和附录均不属于标准的组成部分第章语言是从中派生的第章库是基于用户协会年的标准主题内容与适用范围本标准规定了用程序设计语言书写的程序的形式及其解释注设计本标准的目的在于促进程序在各个数据处理系统之间的可移植性本标准的主要使用对象是实现者和程序员与本标准相关的一个基本文件解释了制定本标准的技术委员会的许多决策本标准规定了程序的表示语言的语法和约束解释程序的语义规则由程序处理的输入数据的表示由程序产生
3、的输出数据的表示对遵从标准的实现的限制和限定值本标准对以下内容未作规定为数据处理系统使用而对程序进行变换的机制为数据处理系统使用而调用程序的机制为程序使用而对输入数据进行变换的机制在程序产生输出数据后对其进行变换的机制将超出任何特定数据处理系统或特殊处理机容量的程序及其数据的长度与复杂性对能够支持一个遵从标准的实现的全部最低要求引用标准信息处理信息交换用七位编码字符集数据处理词汇表示货币和资金的代码二进制浮点运算定义和约定本标准中动词应解释为对实现或程序应提出的要求反之动词不应解释为应禁止下列定义适用于本标准在本标准中显式定义了的术语不能被假定为隐含在其他地方定义的类似术语在本标准中未定义的术
4、语应按解释对齐指特定类型对象应放置在存储区边界的要求该边界的地址是字节地址的特定倍数实参指函数调用表达式中由括号括起来并以逗号分隔的表中的表达式或类似函数的宏调用中由括号括起来并以逗号分隔的表中的一系列预处理单词也称实在参数二进位执行环境中的数据存储单位它应大到足以容纳一个可能具有两种值之一的对象不要求能表达一个对象中每个各别位的地址字节数据存储单位足够大以容纳执行环境中基本字符集的任何一个成员应能唯一表达一个对象中每个各别字节的地址字节由一系列相邻接的二进位组成字节中二进位的数目由实现定义字节的最低有效二进位称为低位最高有效二进位称为高位字符一个字节内能容纳的二进位表示源环境和执行环境的基本
5、字符集中的每个成员的表示都应能被容纳在一个字节内约束进一步解释语言元素评注的语法或语义限制诊断消息实现输出消息子集中的一类消息是实现定义的提前引用的条文对标准中包含与当前条文相关信息的后续条文的提前引用实现一个特定的软件集合它运行在一个受到特殊控制任选的特定翻译环境为一个特定执行环境实现采用说明等同采用在本标准第章出现在本标准第章出现程序的翻译并支持函数在该执行环境中的执行实现定义的行为指对依赖于实现特性的且是正确的程序构件和数据的行为每个实现对这些行为均应用文档说明实现规定的限定值实现对程序所规定的限定值地域特定的行为指依赖于地域国别文化和语言习惯的行为每个实现对这些行为均应用文档说明多字节
6、字符由一个或多个字节构成的序列表示源环境或执行环境中扩展字符集的一个成员扩展字符集是基本字符集的超集对象执行环境中的数据存储区其内容表示值除位段以外对象由一个或多个邻接的字节组成对象中的字节数目次序编码或者显式规定或者由实现定义当被引用时对象可被解释为具有特殊类型见条形参一种对象是声明为具有入口值的函数声明或函数定义的一部分或是紧跟在类似函数的宏定义的宏名之后由括号括起来并以逗号分隔的表中的标识符也称形式参数未定义的行为指当使用了一个不可移植的或是错误的程序构件或错误的数据或无法确定值的对象时的行为而标准并未对这些行为加以规定所允许的对未定义的行为的处理包括尽管可能出现不可预测的结果也完全忽略
7、该情况在翻译或程序执行时按环境文档规定的特性处理不保证出现诊断消息终止翻译或执行保证出现诊断消息若违反了在约束条文以外出现的应或不应要求则该行为是未定义的其他未定义的行为在本标准文本中用文字未定义的行为或由省略任何显式的行为定义来指示对这三种情况并不强调任何区别它们都描述没有定义的行为未规定的行为指标准未提出任何要求的且是正确的程序构件或数据的行为示例函数实参求值的顺序是一种未规定的行为整数溢出时的行为是一种未定义的行为有符号整数右移时高位如何传递是一种实现定义的行为对除个小写英文字母外的字符函数是否返回真值是一种地域特定的行为提前引用的条文逐位移位算符条表达式条函数调用条函数条本地化程序库前
8、导文卷条一致性一个严格遵从标准的程序应当只使用本标准中规定了的那些语言和库特征它不应产生依赖于未规定的或未定义的或实现所定义的行为的输出也不应超出任何实现规定的最低限定值遵从标准的实现有两种形式宿主型和独立型一个宿主型遵从实现应当接受任何严格遵从的程序一个独立型遵从实现应当接受任何严格遵从的程序该程序中对在本标准第章库中所规定了的特征的使用与标准前导文卷和一致一个遵从实现可以有扩展包括附加的库函数只要这些扩展不改变严格遵从程序的任何行为遵从程序是指遵从实现可接受的程序注这意味着一个遵从实现不得保留除本标准中显式规定保留的标识符以外的任何标识符预期严格遵从程序在各遵从实现之间有最大限度的可移植性
9、遵从程序可能会依赖于遵从实现的某些非可移植性特征一个实现应附有定义所有实现定义特征及其扩充的文档提前引用的条文限定值前导文卷和条变长实参库前导文卷条公用定义库前导文卷条环境实现分别在两个数据处理环境中翻译源文卷并执行程序在本标准中分别称它们为翻译环境和执行环境它们的特性定义并约束按照遵从实现的语法和语义规则所构造的遵从程序的执行结果提前引用的条文在第章环境中仅给出了许多可能的提前引用的条文中的一小部分概念化模型翻译环境程序结构一个程序并不一定要全都在同一时刻翻译程序文本存放在本标准中称为源文卷的单位中一个源文卷连同经预处理指示并入的所有前导文卷和源文卷扣除由条件并入预处理指示所跳过的源程序行后
10、称为一个翻译单位以前翻译过的翻译单位可单独保存或存在库中一个程序的各个翻译单位之间通过例如对标识符具有外部链接的函数的调用对标识符具有外部链接的对象的操作或对数据文卷的操作等手段进行通信翻译单位可以先分别翻译然后链接产生一个可执行的程序提前引用的条文条件并入条标识符的链接条源文卷并入条翻译阶段翻译的语法规则之间的优先顺序由下列阶段规定阶段若有必要则将物理文卷字符映射到源字符集对行尾指示符引入新行字符用相应的单字符内部表示替换三联符序列阶段删除每个反斜线字符后紧跟一个新行字符的字符对分割物理源程序行以构成逻辑源程序行不为空的源文卷应以一个新行字符结束该新行字符前不应有紧接的反斜线字符阶段将源文卷
11、分解为预处理单词和一系列的白空类符包括注释源文卷不应在不完整的预处理单词或注释处结束对每条注释都用一个空格字符替换保留新行字符对除新行外的不为空的一系列白空类符的处理是保留还是用一个空格字符替换由实现定义阶段执行预处理指示展开宏调用预处理指示将导致递归地从阶段到阶段处理命名的前导文卷或源文卷阶段将第一个源字符集成员以及字符常量和串字面值中的转义序列转换为执行字符集中的成员阶段串接邻接的字符串字面值单词和邻接的宽串字面值单词阶段此时分隔单词的白空类符不再有意义每个预处理单词都转换为一个单词对如此得到的单词进行语法分析和语义分析并加以翻译阶段解决所有外部的对象引用和函数引用链接有关的库成分以满足对
12、未在当前翻译单位内定义的对象和函数的外部引用将所有这类翻译程序的输出收集到一个程序映象中该映象包含了在其执行环境中执行时所需的信息注即使在实践中常把几个阶段合并在一起但实现必须表现为如同这些阶段分离出现一样如在条中所描述的将源文卷字符分解为预处理单词的过程是上下文相关的作为例子请参见在预处理指示中对的处理提前引用的条文词法元素条预处理指示条三联符序列条诊断一个遵从实现对每个违反任何语法规则或约束的翻译单位应至少以一种实现定义的方式产生一条诊断消息在其他情况下不需产生诊断消息注目的是实现应标识每个违约的性质并尽可能定位当然只要对一个合法的程序仍在进行正确的翻译实现就可自由地产生任意数目的诊断消息
13、实现也可成功地翻译一个不合法的程序执行环境共定义了两种执行环境独立环境与宿主环境在两种环境中当由执行环境调用一个指定的函数时都发生程序启动在程序启动前应对在静态存储区中的所有对象进行初始化置为它们的初值这种初始化的方式和定时在其他地方都未规定程序终止把控制返回给执行环境提前引用的条文初始化条独立环境在独立环境即程序在其中的执行无需操作系统的任何支持的环境中程序启动时调用的函数的名字和类型是实现定义的除此以外再无保留的外部标识符独立程序可用的任何库设施都是实现定义的在独立环境中程序终止的效果也是实现定义的宿主环境不一定需要提供宿主环境但若提供则应遵从下列规格说明程序启动程序启动时调用的函数命名为
14、实现不必声明此函数的原型它可被定义为不带形参或者带两个形参尽管在此使用了名字和但由于它们局部于声明它们的函数因此可使用任何名字若定义了函数则其形参应遵循下列约束的值不应为负值应为一个空指针若的值大于零则数组成员至应包含指向串的指针由宿主环境在程序启动前把实现定义的值赋给这些串这样做的目的是向程序提供由宿主环境的其他部分在程序启动前确定的信息若宿主环境不能提供大小写字母并存的串则实现应保证这些串以小写字母接收若的值大于零则由所指向的串表示程序名若不能从宿主环境获得程序名则应是空字符若的值大于则由至所指向的串表示程序参数形参和以及由数组所指向的串应是可由程序修改的并保持从程序启动至程序终止期间最后
15、一次存储的值程序执行在宿主环境中程序可使用第章库中描述的所有函数宏类型定义和对象程序终止从对函数的初始调用中返回等价于用函数的返回值作为实参调用函数若函数执行一个不规定值的返回操作则返回到宿主环境的终止状态是未定义的提前引用的条文术语定义条函数条程序执行本标准中的语义描述说明了一个抽象机的行为在该抽象机中不涉及优化问题访问易变型对象修改对象修改文卷或调用执行上述任何操作的函数都是副作用它们是执行环境的状态变化对表达式求值可能出现副作用在执行序列中称为序点表达式求值的顺序控制点的某些特定点所有先前求值的副作用均应完成并且后继求值所需的副作用不应在此之前发生在抽象机中所有的表达式都按语义规定求值若
16、某个实际实现可以推断出尚不用某个表达式的值也不用产生必须的副作用包括调用函数或访问易变型对象所引起的任何副作用则该实现可不必对该表达式的任何部分求值当抽象机的处理由于收到一个信号而中断时仅能依赖作为上一个序点的对象的值在上一个序点和下一个序点之间可能被修改的对象不一定已接收到它们的正确值在进入自动存储期的对象所在的程序块时对每个自动存储期的对象都产生一个与之相关的实例这类对象在该程序块执行时以及在该程序块由于调用函数或收到一个信号而挂起时存在并保持其最后存储的值对一个遵从实现的最低要求是当在序点时易变型对象在前面的求值已完成且后继求值尚未发生这种意义上是稳定的当在程序终止时所有已写到文卷中的数
17、据应与按抽象语义执行程序时所应该产生的结果相同交互设备的动态输入输出应按条所规定的发生提出这些要求的目的是使无缓冲的或行缓冲的输出尽可能早出现保证在程序等待输入以前已实际出现提示消息交互设备的组成是实现定义的抽象语义与实际语义之间更严格的对应关系可由每个实现定义示例实现可在抽象语义与实际语义之间定义一一对应关系在每个序点实际对象的值都与由抽象语义规定的对象的值一致此时关键字将是冗余的或者实现也可在每个翻译单位内部进行各种各样的优化使得仅当进行跨越翻译单位边界的函数调用时实际语义才与抽象语义一致在这类实现中对于主调函数和被调函数在不同翻译单位中的情况当每次进入函数和由函数返回时所有外部链接的对象
18、的值和所有可通过指针访问的对象的值将与抽象语义一致而且在这类函数入口时被调函数的形参值及所有可通过指针访问的对象的值将与抽象语义一致在这类实现中由函数激发的中断服务例行程序所引用的对象将需要存储的显式规格说明以及其他实现定义的限制执行下列程序片断时整型升格要求抽象机先将每个变量的值升格为的尺寸再将两个量相加然后截断其和只要能对两个型量相加且不产生溢出异常则实际执行只需产生相同的结果可以省略升格类似地在程序片断中若实现可保证结果如同采用双精度运算执行例如用常量替换该常量的类型为一样则可用单精度运算执行乘法或者如果既不会超出值域范围也不会失去精度那么仅涉及或的运算也可使用双精度运算执行为了解释表达
19、式组合的行为在下列程序片断中由于加法算符的结合律与优先级上述表达式语句的表现确实与语句相同即的结果与相加加得的结果再加上得到赋予的值在溢出将产生异常且可表示的值的范围是的机器上实现不能将上述表达式重写为因为若和的值分别为和则和将产生一个异常而原先的表达式则不会上述表达式也不能重写为或因为和的值可能分别为和或和然而在溢出不产生异常且溢出的结果可逆的机器上实现可将该表达式语句重写成上述任何一种形式因为它们全都会得到同样的结果表达式的组合不完全决定它的求值在下列程序片断中该表达式语句如同写作一样组合但的实际增量可以在前一个序点和下一个序点分号之间的任何时间出现而对函数的调用可在需要它的返回值之前的任
20、何时刻出现提前引用的条文复合语句或块条表达式条文卷条序点条条函数条类型限定词条有关环境的考虑字符集应定义两个字符集及与它们相关的理序序列用于书写源文卷的字符集和在执行环境中解释的字符集执行字符集成员的值是实现定义的任何在本条要求之外的附加成员均是地域特定的在字符常量或串字面值中执行字符集中的成员应当用对应的源字符集成员或者用由一个反斜线字符后紧跟一个或多个字符所组成的转义序列来表示在基本执行字符集中应有一个其字节的所有位均置为的称为空字符的字符空字符用来终止一个字符串字面值基本源字符集和基本执行字符集均应至少具有下列成员英文字母表中的个大写字母英文字母表中的个小写字母个十进制数字字符下列个图形
21、字符再加上空格字符以及表示横向制表纵向制表和换页的控制字符在源字符集和基本执行字符集中上述十进制数字字符表中之后的每个字符的值均应比前一个字符的值大在源文卷中应有某种方式指示每一行正文的结束本标准将这种行尾指示符按单个新行字符处理在执行字符集中应有表示告警退格回车和新行的控制字符若在源文卷中遇到除出现在字符常量串字面值前导文卷名注释或永不被转换为单词的预处理单词中的字符外的其他字符则其行为是未定义的提前引用的条文字符常量条预处理指示条串字面值条注释条三联符序列下列三个字符的序列称为三联符序列它们在源文卷中的所有出现都用对应的单字符替换不存在其他的三联符序列对不是开始上述三联符序列之一的不作改变
22、注三联符序列使得可以输入未在中定义的字符是七位代码集的一个子集示例下列源行在替换三联符序列后成为多字节字符源字符集中可包含多字节字符用于表示扩展字符集的成员执行字符集中也可包含多字节字符但它们的编码不一定要与源字符集中的多字节字符的编码相同下列条件对两个字符集均应成立应包含在条中所定义的单字节字符任何附加成员的存在含义和表示均是地域特定的一个多字节字符可具有依赖于状态的编码每个多字节字符序列以一个初始转义状态开始当在序列中遇到特定的多字节字符时进入其他实现定义的转义状态当处在初始转义状态时所有单字节字符均保持它们通常的解释且不改变转义状态序列中后断字节的解释是当前转义状态的函数所有位均为的字节
23、应独立于转义状态一概解释为空字符所有位均为的字节不应作为多字节字符的第二个或后继的字节出现对源字符集下列条件应成立注释串字面值字符常量或前导文卷名均应以初始转义状态开始和结束注释串字面值字符常量或前导文卷名均应由合法的多字节字符序列组成字符显示语义活动位置是指在显示设备上由函数输出的下一个字符应出现的位置把一个可印刷的如由函数所定义的字符写到显示设备上的目的是在活动位置上显示该字符的图形表示然后将活动位置推进到当前行的下一个位置写的方向是地域特定的若活动位置已处在一行的最后一个位置则其行为是未规定的表示执行字符集中非图形字符的字母转义序列的作用是在显示设备上产生下列动作告警产生一个可听或可视的
24、告警信息不应改变活动位置退格将活动位置移至当前行的前一个位置若活动位置已处于当前行的起始位置则其行为是未规定的换页将活动位置移至下一个逻辑页面的起始位置新行将活动位置移至下一行的起始位置回车将活动位置移至当前行的起始位置横向制表将活动位置移至当前行的下一个横向表格位置若活动位置已处于或越过所定义的最后一个横向表格位置则其行为是未规定的纵向制表将活动位置移至当前行的下一个纵向表格起始位置若活动位置已处于或越过所定义的最后一个纵向表格位置则其行为是未规定的这些转义序列中的每一个均应产生一个实现定义的唯一值该值应能存储在单个型对象中它们在文本文卷中的外部表示不必与内部表示完全相同且已超出本标准的范围
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GB 15272 1994 程序设计语言
