虽然answering a question使用了一些我认为不是标准C的函数(sscanf_s和sprintf_s),但Daniel提请我注意,有关函数是在附件K中定义的。
我一般理解规范意味着它有助于定义标准。但是,C标准的一个附件历来被视为仅提供信息。附件K在C11标准中被标记为规范。它定义了“安全”功能。
这是否意味着不提供这些函数的编译器不符合C11标准?
我只有C11标准草案,但它指出附件K是规范的,但标准的图书馆部分没有提到附件K中讨论的功能。
规范附件是否只定义了可选的延期?
发布于 2013-05-22 20:23:36
附件K是可选的,它本身就是这样说的。
见K.2第2段:
定义
__STDC_LIB_EXT1__的实现应符合本附件中的规范。
附脚注:
不定义
__STDC_LIB_EXT1__的实现不需要符合这些规范。
第3段说:
第K.3款应理解为该款已并入第7条所列各款的平行结构。
这就是为什么没有必要在库部分第7条中提到它(或者至少标准的作者不认为它是必要的)。
定义__STDC_LIB_EXT1__的实现必须将其定义为201112L;N1570和发布的C11标准都犯了错误,但它在技术勘误表中得到了修正。
发布于 2013-05-22 20:12:59
这是“规范”,因为声称支持附件K的执行必须符合其中的要求。这不是强制性的。
https://stackoverflow.com/questions/16700541
复制相似问题