上次我检查过,说你在ANSI C编码等于说“这是符合C99标准的代码,其中没有别的东西”。现在有了C11和C ++ 11,这种区别仍然存在吗?它还有某种意义吗?
答案 0 :(得分:15)
然后一段时间“ISO C”用于表示“新标准C”,即C99,与“ANSI C”形成鲜明对比。
这一直是一个令人困惑的用法,因为ISO和ANSI都批准了C89和C99。 ISO批准了前者作为C90,并在ANSI版本中发布了一些布局变化,但据称具有相同的实质内容。因此“ANSI C”始终是ISO标准,“ISO C”始终是ANSI标准。唯一的区别是哪个机构监督标准化过程。
遵循此用法(并可能鼓励它继续),GCC的-ansi
标志等同于-std=c90
。它的上下文实际上意味着“C90,加上一些不与标准冲突的GNU扩展”。
我不知道“ANSI C”是指C99,但这并不意味着它没有被用来表示。
我不认为使用术语“ANSI C”在过去10年中帮助过任何人。 ANSI批准了C11,但开始说“啊哈!在这种情况下,ANSI C突然现在意味着C11!”就没有用了。我们当然可以说C11是当前的ANSI C标准,但是“ANSI C”这个术语不能用于任何合理的期望,人们会清楚地将其理解为C11。
答案 1 :(得分:9)
ISO C11和ISO C ++ 11都已被批准为新的ANSI C和C ++标准。
例如,在我的C11的ANSI副本上写道:
INCITS(国际信息技术标准委员会)作为美国国家标准通过。 ANSI批准日期:2012年5月23日
答案 2 :(得分:5)
由于目前 1 C标准的3个不同版本和C ++版本的“两个半”被广泛使用,我认为今天这样的术语比以往任何时候都没有意义。