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
相关推荐
Canmag 兴隆磁性2 小时前
C 系列充磁机
c语言·开发语言·学习·永磁材料·充磁·退磁
_Narcissus_4 小时前
排序算法总结表格
c语言·数据结构·c++·笔记·算法·排序算法·总结
小雪崩4 小时前
嵌入式学习 day27:标准IO
linux·c语言·学习
XUEYUAN52124 小时前
Cloudflare 防护机制深度剖析与跨境数据采集工程化实践
服务器·网络·网络协议·tcp/ip·http
青瓦梦滋4 小时前
IP/MAC帧/ARP协议
运维·服务器·网络·网络协议·tcp/ip
xx~t6 小时前
嵌入式——Linux软件编程2
linux·运维·服务器·c语言·学习方法
RisunJan6 小时前
Linux命令-vgchange(修改 LVM 卷组属性)
linux·运维·服务器
ZMacros7 小时前
Buildroot构建文件系统
linux·服务器
herinspace7 小时前
管家婆财贸ERP如何进行基本信息批量搬移
服务器·数据库·管家婆软件·财务软件