jxh*_*jxh 7 c tr24731 language-lawyer c11
在回答使用我认为不是标准C 的某些功能(sscanf_s和sprintf_s)的问题时,Daniel Fischer提请我注意所涉及的功能在附件K中定义.
我一般都明白,规范意味着它有助于定义标准.但是,C标准的附件传统上仅被视为信息性的.附件K在C11标准中标注为规范性的.它定义了"安全"功能.
这是否意味着没有提供这些功能的编译器不符合C11标准?
我只能获得C11标准草案,但它指出附件K是规范性的,但标准的库部分没有提到附件K中讨论的功能.运行时约束定义中的注释似乎意味着附件K定义了一个扩展.
规范性附件是否仅定义了可选的扩展?
Kei*_*son 15
附件K是可选的; 它自己这么说.
见K.2第2段:
定义的实现
__STDC_LIB_EXT1__应符合本附件中的规范.
用脚注:
未定义的实现
__STDC_LIB_EXT1__不需要符合这些规范.
第3段说:
应将第K.3条视为合并为第7条命名条款的并行结构.
这就是为什么没有必要在图书馆部分第7条中提及它(或者至少标准的作者认为没有必要).
定义的实现__STDC_LIB_EXT1__必须将其定义为201112L; N1570和发布的C11标准都出错了,但它已在技术勘误中得到修正.
它是“规范的”,因为声称支持附件 K 的实现必须满足其中的要求。这不是强制性的。
| 归档时间: |
|
| 查看次数: |
1867 次 |
| 最近记录: |