上次我检查过,说你在ANSI C编码等于说“这是符合C99标准的代码而没有别的东西”.现在有了C11和C 11,这种区别仍然存在吗?它还有某种含义吗?
解决方法
历史上,“ANSI C”用于表示“标准C”,即C89,与“K& R C”和编译器 – 编写者发明的各种预标准变体形成对比.这就是第二版的原因. “C编程语言”的封面上有一个大的红色“ANSI C”标记.
然后一段时间“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”在过去十年中帮助过任何人. ANSI批准了C11,但开始说“啊哈!在这种情况下,ANSI C突然现在意味着C11!”就没有用了.我们当然可以说C11是当前的ANSI C标准,但是术语“ANSI C”不能用于任何合理的期望,人们会清楚地将其理解为C11.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。