我已经开始了在codechef上的编程实践,并被C和C99之间的差异搞糊涂了。C在这里是什么意思?是C89吗?检查this submit底部的语言。它包含C和C99。
我在互联网上找到了一种叫做GNU C的东西,有没有不同的用于linux/unix系统的C?这些标准是否符合ANSI的C标准?我在一些地方也读到过"C99 strict“。这是什么?
还有没有其他不同的C标准在使用?是不是有个叫做C 4.3.2的东西,还是现在使用的是gcc的版本?
编辑:
This,This,This帮了忙。我会搜索更多,并编辑未回复的内容。
我不是编程新手。我知道C语言是什么。我知道美国国家标准协会有不同的C标准,如C89,C99和C11。
发布于 2013-06-20 17:04:36
在标准化之前的一切通常被称为"K&R C",以著名的书(1st edition
请注意,自1989年以来,ANSI与C语言没有任何关系。仍然在谈论"ANSI C“的程序员通常对它的含义一无所知。国际标准化组织拥有C语言,通过标准ISO9899。
_Generic
、_Static_assert
和线程支持。更新的重点是多核、多处理和表达式排序。从2011年到2017年,这是“C语言”。__STDC_VERSION__
= 201710L
),但由国际标准化组织发布为9899:2018,因此C17/C18之间存在歧义。它不包含新功能,只包含更正。它是C语言的当前版本。"C99 strict“可能指的是强制编译器严格遵循标准的编译器设置。在C标准中有一个符合实现的术语。本质上它意味着:“这个编译器实际上正确地实现了C语言”。正确实现C语言的程序被正式地称为严格一致的程序。
"GNU C“有两种含义。要么是C编译器本身,要么是作为GNU编译器集合的一部分(GCC)。也可以是指GCC C编译器使用的非标准默认设置。如果您使用gcc program.c
编译,那么您不会按照C标准进行编译,而是按照非标准的GNU设置进行编译,这可能被称为"GNU C“。例如,整个Linux内核都是用非标准的GNU编写的,而不是用标准的C。
如果您想要根据C标准编译程序,则应该输入gcc -std=c99 -pedantic-errors
。如果您的GCC版本支持,请将c99替换为c11。
发布于 2016-01-28 06:29:05
我必须回应关于ANSI C的问题。虽然ANSI没有对它做任何事情,但编译器仍然构建在它之上。PIC XC16编译器例如:“该编译器是一个经过充分验证的编译器,它符合ANSI规范(ANSIx3.159-1989)定义的ANSI标准,并在Kernighan和Ritchie的the C Programming Language (第二版)中进行了描述。……”并不是所有的编程都适用于像PC这样的“大”计算机。为你的设备编写编译器需要花费大量的成本,而验证需要耗费大量的时间和$。ANSI C在你的嵌入式/实时设备中很有活力。
发布于 2013-06-20 15:01:49
随着开发人员的需求,在1999-2000年中,C99中包含了更多或更多的关键字和特性(例如: inline、boolean..添加了浮点库函数)
ANSI C是一个正在被其他标准使用或参考的标准。
https://stackoverflow.com/questions/17206568
复制相似问题