C,C99,ANSI C和GNU C有什么区别?
我已经开始对codechef进行编程练习,并且被C和C99之间的差异弄糊涂了。 C是什么意思? 它是C89吗? 检查本次提交底部的语言。 它包含C和C99。
我在互联网上发现了一些名为GNU C的东西。对于linux / unix系统有没有不同的C语言? ANSI是否符合C标准? 我也在一些地方读过“C99严格”。 这是什么?
还有其他不同的C标准在使用吗? 有没有叫做C 4.3.2或者它是目前使用的gcc版本?
编辑:
这,这,这有帮助。 我会搜索更多并编辑没有答案的东西。
我不是一个编程新手。 我知道C语言是什么。 我知道ANSI有不同的C标准,如C89,C99和C11。
标准化之前的所有内容通常被称为“K&R C”,在着名的书籍之后,与C语言的发明者Dennis Ritchie一起作为作者之一。 这是1972年至1989年的“C语言”。
第一个C标准于1989年在美国国家标准学会ANSI上发布。 这个版本被称为C89或ANSI-C。 从1989年到1990年,这是“C语言”。
一年后,美国标准被国际接受并通过ISO(ISO 9899:1990)发布。 这个版本被称为C90。 从技术上讲,它与C89 / ANSI-C相同。 从形式上讲,它取代了C89 / ANSI-C,使它们过时了。 从1990 - 1999年,C90是“C语言”。
请注意,自1989年以来,ANSI与C语言没有任何关系。 仍然在谈论“ANSI C”的程序员通常不知道它的含义。 ISO“拥有”C语言,通过标准ISO 9899。
1999年,C标准进行了修订,许多事情发生了变化(ISO 9899:1999)。 该版本的标准称为C99。 从1999年到2011年,这是“C语言”。
2011年,C标准再次发生了变化(ISO 9899:2011)。 这个版本被称为C11。 它目前是“C语言”的定义。
“C99严格”可能是指编译器设置强制编译器遵循该信件的标准。 C标准中有一个符合条件的实现。 本质上它意味着:“这个编译器实际上正确地实现了C语言”。 正确实施C语言的程序正式称为严格符合程序。
“GNU C”意味着两件事。 可以是作为GNU编译器集合(GCC)的一部分的C编译器本身。 或者它可能意味着GCC C编译器使用的非标准默认设置。 如果使用gcc program.c
进行编译,那么您不会根据C标准进行编译,而是可能会被称为“GNU C”的非标准GNU设置。 例如,整个Linux内核是在非标准的GNU C中制作的,而不是在标准的C中制作的。
如果你想按照C标准编译你的程序,你应该输入gcc -std=c99 -pedantic-errors
。 如果您的GCC版本支持,请将c99替换为c11。
ANSI C:第一个C语言在1989年被称为ANSI的机构标准化,这就是为什么它被称为C89。
C99:
根据开发人员的要求,在1999年至2000年期间,进一步的或额外的关键字和功能已经包含在C99中(例如:内联,布尔......添加了浮点数艺术库函数)
GNU C:GNU是一个类似Unix的操作系统(www.gnu.org)&某处GNU的项目需要基于ANSI C标准的C编程语言。 GNU使用GCC(GNU Compiler Collection)编译器来编译代码。 它具有定义诸如malloc,calloc,exit等系统调用的C库函数
ANSI C是被其他标准使用或引用的标准。
我必须对ANSI C做出回应。虽然ANSI没有对它做任何事情,但编译器仍然依靠它。 例如PIC XC16编译器:“该编译器是一个完全验证的编译器,符合ANSI规范(ANSI x3.159-1989)定义的ANSI C标准,并在Kernighan和Ritchie的The C Programming Language(第二版)中进行了描述。 ......“并非所有的编程都是针对像PC这样的”大“计算机。 为您的设备成本编写编译器,并验证成本时间&$。 ANSI C在您的嵌入式/实时设备中生动活泼。
链接地址: http://www.djcxy.com/p/40385.html上一篇: What is the difference between C, C99, ANSI C and GNU C?