GNU 是一款能用于构建类 Unix 操作系统的计算机软件合集,由自由软件之父 Richard Stallman 开创,于 1983 年 9 月 27 日对外发布。GNU 完全由自由软件(free software)构成。
GNU 语法扩展源自于 GCC 编译器,在 1987 年发布 1.0 版本,称为 GNU C Compiler。随后,GCC 编译器前端支持了 C++、Objective-C/C++、Fortran、Ada、Java 以及最近跃升的 Go 等编程语言,因此现在 GCC 被称为 GNU Compiler Collection。
由于在 20 世纪 90 年代,GNU C 编译器就对 C90 标准做了相当多的语法扩展,包括复合字面量、匿名结构体和数组、可指定的初始化器等,这些语法扩展被广泛使用,尤其是大量用于 Linux 内核代码中,因此 C99 标准将这些语法特性全都列入标准之中。
正因为 GCC 本身是开源自由软件,因此很多商用编译器也基于 GCC 进行扩展,例如:
像 ARM 的 RVCT(RealView Compiler Toolkit)本身就支持 GNU 扩展;