GNU C和标准C

要理解GNU C和标准C的区别,我们需要先了解C语言的标准化过程以及GNU项目。

标准C: C语言最初由Dennis Ritchie在1973年设计并实现。随着其流行度的增加,为了保证不同编译器之间的可移植性和一致性,美国国家标准局(American National Standards Institute,简称ANSI)成立了一个委员会,并于1989年统一了C语言标准,被称为"ANSI C"或"C89"。后来,ISO和ANSI共同发布了几个更新的标准:C99、C11、C17等。

参考网站: https://open-std.org/JTC1/SC22/WG14/
GNU C: GNU C是GNU项目中GNU编译器集合(GCC)所使用的C语言的一个变种,它支持ISO C的所有标准功能,并且还扩展了一些特定的功能和扩展,以提供更多的编程灵活性。这些扩展包括一些额外的数据类型、属性和语句扩展,这些通常不在ANSI C或ISO C标准中。

其中GNU项目是由自由软件基金会(Free Software Foundation,简称FSF)发起,旨在为全世界的人们提供开放源码软件。

区别:
1. 兼容性 :标准C旨在确保任何符合标准的C代码能够在所有遵循该标准的编译器上编译并产生相同的结果,而GNU C则包含了一些标准C没有的扩展。
2. 扩展性 :考虑到GCC广泛的使用和其高度优化的编译器特性,有时程序员可能会选择使用GNU C的扩展来优化代码或使用特定的编译器特性。
3. 移植性:由于GNU C的扩展并不是所有编译器都支持的,使用这些扩展的代码可能不具备与使用纯标准C编写的代码相同的移植性。

在实际编程中,需要决定是遵循标准C以确保代码移植性,还是使用GNU C的扩展来利用GCC的特定优势。如果决定使用GNU C的扩展,通常建议以一种可以通过宏定义等做出调整以保持与标准C兼容的方式来使用,以免代码在非GNU编译器上无法编译。

参考

1.《c程序设计语言》

  1. C语言 ISO标准: https://www.iso.org/standard/74528.html
相关推荐
流星白龙11 分钟前
【C语言题目】34.猜凶手
c语言·开发语言
XF鸭23 分钟前
HTML-CSS 入门介绍
服务器·前端·javascript
chem411127 分钟前
C语言4 运算符
c语言·开发语言
郝YH是人间理想32 分钟前
《算法笔记》总结No.3——排序
c语言·数据结构·c++·算法·排序算法·csp
lshzdq37 分钟前
【CMake】基本概念和快速入门
linux·运维·服务器
爱技术的小伙子1 小时前
Linux 磁盘管理与分区:使用fdisk、parted、df、du等命令管理磁盘和分区
linux·运维·服务器
Java小白白同学1 小时前
Linux:CentOS 系统磁盘扩容操作
linux·服务器·centos
semicolon_hello1 小时前
使用C++编写TCP服务端程序
服务器·网络·c++·tcp/ip
不喜欢就睡大觉1 小时前
Linux—网络设置
linux·运维·服务器
Roc-xb1 小时前
使用ifconfig命令获取当前服务器的内网IP地址
运维·服务器·tcp/ip