繁体   English   中英

不支持的标准特性会影响一致性吗?

[英]Do unsupported standard features affect conformance?

上下文:C 编译器在符合实现时故意不支持某些功能。 可以吗?

一些例子。 下面的所有编译器都是符合标准的实现( __STDC__定义为1 )。 然而:

  • gcc 不支持#pragma STDC FENV_ACCESS并发出warning: ignoring '#pragma STDC FENV_ACCESS' [-Wunknown-pragmas] 但是, fenv.h 是标准头文件,标准要求支持#pragma STDC FENV_ACCESS ON ,因为ONon-off-switch中的选择之一: ON OFF DEFAULT

  • msvc 不支持#pragma STDC FP_CONTRACT ,而是支持它自己的版本#pragma fp_contract ( { on | off } ) 但是,标准版本是#pragma STDC FP_CONTRACT { ON | OFF | DEFAULT } #pragma STDC FP_CONTRACT { ON | OFF | DEFAULT } #pragma STDC FP_CONTRACT { ON | OFF | DEFAULT }

  • Cygwin 上的 gcc: sscanf 不处理十六进制浮点输入 而 libc 是标准的一部分。

问题:是否允许实现故意提供有限的功能(或此类功能的它自己的版本)并同时仍然符合实现?

问题的原因:更好地理解conforming implementation的定义以及围绕现有符合性实现的事务状态。

注意:这里感兴趣的领域仅符合托管实施。 但是,该问题也适用于符合独立实施的情况。

更新。 再次: __STDC__ is defined to 1意味着可能符合 implementation而不是符合 implementation 与标准的任何差异都会自动使此类实现成为“将__STDC__定义为 1 的不合格实现”。

如果一个标准有一个规则,一个实现做 X,一个实现不做 X,那么它就是不符合。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM