[英]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
,因为ON
是on-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.