Pav*_*kin 0 c standards-compliance language-lawyer c11 c17
上下文:C 编译器在实现一致的同时故意不支持某些功能。可以吗?
\n一些例子。下面的所有编译器都是一致的实现(__STDC__定义为1)。然而:
gcc 不支持#pragma STDC FENV_ACCESS并出现问题warning: ignoring \xe2\x80\x98#pragma STDC FENV_ACCESS\xe2\x80\x99 [-Wunknown-pragmas]。然而, fenv.h 是一个标准头文件,#pragma STDC FENV_ACCESS ON标准要求支持 ,因为是on-off-switch :ON中的选择之一。ON OFF DEFAULT
msvc 不支持#pragma STDC FP_CONTRACT,而是支持它自己的版本#pragma fp_contract ( { on | off } )。但是,标准版本是#pragma STDC FP_CONTRACT { ON | OFF | DEFAULT }.
Cygwin 上的 gcc:sscanf 不处理十六进制浮点输入。libc 是标准的一部分。
\n问题:是否允许实现故意提供有限的功能(或其自己的此类功能版本),同时仍然符合实现?
\n问题的原因:更好地理解现有一致性实现的定义conforming implementation和状况。
注意:此处感兴趣的领域仅是符合托管实施。然而,这个问题也适用于符合要求的独立实施。
\nUPD。再说一次:__STDC__ is defined to 1意味着可能是一致的实现而不是一致的实现。与标准的任何差异都会自动使此类实现成为“定义__STDC__为 1 的不合格实现”。
| 归档时间: |
|
| 查看次数: |
99 次 |
| 最近记录: |