4. 标准顺从

1、在本国际标准中,“应该”被解释为对一个实现或一个程序的要求;相反地,“不该”被解释为禁用。

2、如果违反了出现在一个强制规定或运行时强制规定之外的“应该”或“不该”要求,那么该行为是未定义的。否则,未定义行为在本国际标准中通过“未定义行为”这一短语或通过对任一显式定义的行为的缺省进行指定。在这三种表达方式之中没有特别的重点强调;它们都描述了“未定义的行为”。

3、在所有其它方面都正确的一个程序且操作正确的数据,却含有未指定的行为,那么应该是一个正确的程序并且其行为符号5.1.2.3。

4、实现不该成功翻译含有一个#error预处理指示符的预处理翻译单元,除非它是通过条件包含被跳过的一个组的一部分。

5、一个严格顺从本标准的程序应该只使用在本国际标准中所指定的那些语言特征和库。注:一个严格顺从标准的程序可以使用条件特征(见6.10.8.3),使用相关宏的一个适当条件包含预处理确保提供了对严格顺从本国际标准程序的使用。比如:

#ifdef __STDC_IEC_559__    /* 定义了FE_UNWARD */
/* ... */
fesetround(FE_UPWARD);
/* ... */
#endif

它不应该产生依赖于任一未指定的、未定义的以及实现自定义的行为,并且不应该超过任一最小实现的限制。

6、顺从标准的两种形式的实现是宿主实现和独立实现。一个顺从标准的住宿实现应该接受任一严格顺从标准的程序。一个顺从标准的独立实现应该接受任一严格顺从标准的程序,对在库条款(条款7)中所指定的特征的使用限于标准头<float.h><iso646.h><limits.h><stdalign.h><stdarg.h><stdbool.h><stddef.h><stdint.h>以及<stdnoreturn.h>内容的范围内。一个顺从标准的实现可以含有扩展(包括额外的库函数),他们不改变任一顺从标准程序的行为。注:这暗示了一个顺从标准的实现在本国际标准中所显式保留的标识符外不保留标识符。

7、一个顺从标准的程序是对于一个顺从标准的实现可接受的程序。注:严格顺从标准的程序目的在于在顺从标准的实现之间最大地达成可移植性。顺从标准的程序可以依赖于一个顺从标准的实现的不可移植的特征。

8、一个实现应该伴随其定义所有实现自定义以及区域特定特征和所有扩展的文档。

ISO/IEC 9899:2011 条款4——标准顺从的更多相关文章

  1. ISO/IEC 9899:2011 条款3——术语、定义与符号

    3. 术语.定义与符号 1.对于此国际标准的意图,应用了以下定义.其它术语是在用斜体类型或一个语法规则左侧出现的地方定义.在本国际标准中所显式定义的术语不被假定为对其它地方所定义的类似术语的隐式引用. ...

  2. ISO/IEC 9899:2011 条款5——5.2.1 字符集

    5.2.1 字符集 1.两个字符集和它们相关联的依次顺序应该被定义:写在源文件中的集合(源字符集),以及在执行环境中被解释的集合(执行字符集).每个集合此外被划分为一个基本字符集,其内容由本子条款给出 ...

  3. ISO/IEC 9899:2011 条款6.4.2——标识符

    6.4.2 标识符 6.4.2.1 通用 语法 1.identifier: identifier-nodigit identifier    identifier-nondigit identifie ...

  4. ISO/IEC 9899:2011 条款6.4.3——通用字符名

    6.4.3 通用字符名 语法 1.通用字符名: universal_character-name: \u hex-quad(四位十六进制数) \U hex-quad hex-quad hex-quad ...

  5. ISO/IEC 9899:2011 条款5——5.1.2 执行环境

    5.1.2 执行环境 1.定义了两个执行环境:独立式(freestanding)以及宿主的(hosted).在这两种情况下,当一个派定的C函数被执行环境调用时,程序就启动.所有具有静态存储周期的对象应 ...

  6. ISO/IEC 9899:2011 条款5——环境

    5.环境 1.一个实现在两个不同的数据处理系统环境下分别翻译C源文件与执行C程序,在本国际标准中分别称为翻译环境和执行环境.它们的特征定义并包含了根据顺从标准实现的语法及语义规则所构造的顺从标准的C程 ...

  7. ISO/IEC 9899:2011 条款6.7.3——类型限定符

    6.7.3 类型限定符 语法 1.type-qualifier: const restrict volatile _Atomic 约束 2.除了指针类型(其被引用的类型是一个对象类型)之外的类型,不应 ...

  8. ISO/IEC 9899:2011 条款5——5.2.4 环境限制

    5.2.4 环境限制 1.翻译与执行环境都约束了语言翻译器和库的实现.下面概述了对一个顺应标准实现的语言相关的环境限制:库相关的限制在条款7中讨论. 5.2.4.1 翻译限制 1.实现应该能够翻译并执 ...

  9. ISO/IEC 9899:2011 条款6.3.1——算术操作数

    6.3.1 算术操作数 6.3.1.1 布尔.字符以及整数 1.每个整数类型具有一个整数转换等级,如下定义: ——两个带符号的整数类型都不应该具有相同等级,即使它们具有相同的表示. ——一个带符号整数 ...

随机推荐

  1. 【Spring Boot】Spring Boot之跨域解决方案

    一.什么是跨域 跨域,指的是从一个域名去请求另外一个域名的资源.即跨域名请求!跨域时,浏览器不能执行其他域名网站的脚本,是由浏览器的同源策略造成的,是浏览器施加的安全限制. 跨域的严格一点来讲就是只要 ...

  2. Windows下安装Scipy和Numpy失败的解决方案

    使用 pip 安装 Scipy 库时,经常会遇到安装失败的问题 pip install numpy pip install scipy 后来网上搜寻了一番才得以解决.scipy 库需要依赖 numpy ...

  3. sqlserver 智能提示插件

    文章:SqlServer智能提示插件SQLPrompt 地址:https://blog.csdn.net/u013628152/article/details/83274478

  4. X2E车载数据记录仪

            随着智能驾驶及网联技术深入应用,汽车中传输的数据量与日俱增,包括多种总线数据.视频数据.雷达数据.定位数据等等.据悉,高级别智能驾驶汽车中每秒传输的总线数据就达到G比特级别.而从产品开 ...

  5. sql查询时增加自动编号和分页

    查询时加序号 a:没有主键的情形: ,) as iid,* into #tmp from TableName Select * from #tmp Drop table #tmp b:有主键的情形: ...

  6. treegrid 折叠全部节点

    $(".easyui-treegrid").treegrid({ url: '@Url.Action("GetDataDictionaryList", &quo ...

  7. 解决:一个项目中写多个包含main函数的源文件并分别调试运行

    自己在学c++的时候,一个项目中的多个cpp文件默认不允许多个main函数的出现,但是通过选项操作能够指定单个cpp文件进行运行,如下: 1.此时我就想运行第二个cpp文件,我们只需要把其他的两个右键 ...

  8. OLED液晶屏幕(4)串口读取文字并分割,液晶屏幕显示

    ESP8266-07 0.93存 液晶屏 128*64  驱动芯片 ssd1306 接线 VCC-5v GND-GND SCL-D1(SCL) SDA-D2(SDA) 安装两个库 #include & ...

  9. MATLAB中运算符优先级

    下述运算符的优先级从低到高: 1.先决或(||): 2.先决与(&&): 3.逻辑或(|): 4.逻辑与(&): 5.等于类(<,<=,>,>=,==, ...

  10. 图书检索系统C版本

    原创,转载请注明出处! 程序具有一下功能窗口界面1,Input输入(读入文件,所有的文件都读入)2,Output输出(检验是否读取正确,从结构体数组读入)3,Length统计(此文件里有110本图书) ...