我已经开始在codechef上进行编程练习,并且对C和C99之间的区别感到困惑。 C在这里意味着什么?是C89吗?检查this submit底部的语言。它包含C和C99。
我在互联网上发现了一个名为GNU C的东西。对于linux / unix系统有不同的C吗?这些是否符合ANSI的C标准?我也在一些地方读过“C99严格”。这是什么?
是否还有其他不同的C标准?有没有叫做C 4.3.2的东西,还是当前使用的gcc版本?
编辑:
This,This,This帮忙。我会搜索更多并编辑未回答的内容。
我不是一个编程新手。我知道C语言是什么。我知道ANSI有不同的C标准,如C89,C99和C11。
_Generic
,_Static_assert
和线程支持等各种新功能被添加到该语言中。该更新主要关注多核,多处理和表达序列。从2011年到2017年,这是“C语言”。“C99 strict”可能是指编译器设置强制编译器遵循该字母的标准。 C标准中有一个符合条件的术语。本质上它意味着:“这个编译器实际上正确地实现了C语言”。正确实现C语言的程序正式称为严格符合程序。
“GNU C”可能意味着两件事。 C编译器本身作为GNU编译器集合(GCC)的一部分。或者它可能意味着GCC C编译器使用的非标准默认设置。如果使用gcc program.c
进行编译,则不按照C标准进行编译,而是使用非标准GNU设置进行编译,这可能被称为“GNU C”。例如,整个Linux内核是用非标准的GNU C制作的,而不是标准的C.
如果要根据C标准编译程序,则应键入gcc -std=c99 -pedantic-errors
。如果您的GCC版本支持,请将c99替换为c11。
我必须回应ANSI C.尽管ANSI没有对它做任何事情,编译器仍然是为它构建的。例如,PIC XC16编译器:“编译器是一个完全验证的编译器,符合ANSI规范(ANSI x3.159-1989)定义的ANSI C标准,并在Kernighan和Ritchie的C编程语言(第二版)中有所描述。 ......“并非所有编程都适用于PC等”大型“计算机。为您的设备成本编写编译器,并验证成本时间和$。 ANSI C在您的嵌入式/实时设备中充满活力。
ANSI C是其他标准使用或参考的标准。
除了Lundin Answer
以下是Dennis Richie在被问到时对Say的看法
“为什么K&R在编写K&R第二版之前没有等待最终的,经过批准的ANSI标准?”
为什么K&R在编写K&R第二版之前没有等待最终批准的ANSI标准?看来这本书只有几个月才会被最终的ANSI标准所取代。我知道在这个晚期阶段可能会有很少的重大变化,但为什么不等几个月并确保你100%正确,而不是需要几乎立即写第3版或过时?
我们认为庆祝第一版诞生10周年会很棒。更严重的是,我们去年夏天开始工作,因为我们有时间和倾向,看来X3J11即将结束。在12月和1月,当我们完成时,我们考虑了重要变更的可能性是否有理由推迟交付,并且(在与出版商讨论此事后)决定不值得等待。 P-H想要它,Brian和我都希望它不在我们的议程之内。
即使标准有变化,也很难想象它们足够广泛以保证新版本。 (我们甚至准备以某种方式处理noalias,如果它已经持续了。)我们已经准备好在未来的印刷中做出必要的改变,但是有理由希望它们应该是次要的。 X3J11的成员非常渴望完成而不会让人惊讶;毕竟,他们中的许多人都在为准备ANSI编译器的公司工作。
丹尼斯里奇
这个问题没有在网上彻底搜索到答案,无论如何你可能会看到这个:
-std=c99
,这在其他答案中已经提到过。