gcc编译器小知识FAQ(不断补充)

简介:
我收集了一些gcc相关的知识,提供给没时间或者没兴趣了解gcc太多细节知识的朋友。但是这些知识确实又是作为一个gcc使用者应该知道的。

q:gcc的全称是什么:
a: gcc 是 gnu compiler collecti 编译器套装),它不仅仅只是编译c语言的编译器,它提供了对c、面向对象的c(object c), c++, java, ada 语言的编译服务。 过去有一段时间,它被成为gnu c compiler是因为它最初的开发目的的确是只提供了c编译功能,但是现在已经不在是这样了。 

q:gcc 和g++什么关系
a:事实上只有一个c++编译器,那就是g++。g++不仅仅是一个c++预处理器,而是一个实实在在的c++编译器。由于它的名字 gnu c++ compiler 也能缩写成gcc,所以有时候有人叫它gcc也并不错。而我们通常所说的gcc是一个编译器套装,gcc命令只是一个调用各个实际编译器的快捷方式而已。

q:gcc所支持的c语言规范有哪些
a: 目前主要的c语言规范有c89(c90), c95(94)和c99。c89是最早的c语言规范,于89年提出,90年先由美国国家标准局推出ansi版本,后来被接纳为iso国际标准 (iso/iec 9899:1990),因而有时也称为c90。 但在94和96年分别对c90进行了两次错误修正,gcc支持的是修正后的c89(90)版本的c语言规范。在95年提出过对90版规范的修订案,称为c95或者amd1。gcc也支持c95规范。最新的一次c规范修订在99年制定(iso/iec 9899:1999),即常称的c99规范。在2001年对c99的错误进行了修正,gcc支持的修正后的c99规范,但是到目前为止,gcc还没有完成对c99规范的完全支持。 

在默认设置下,gcc对c语言进行了一些自己的扩展。在不加语言设置参数的情况下,gcc使用c89规范和自己的一些扩展。在将来如果gcc完成了对c99的全面支持,可能默认会使用c99规范加gcc自己的扩展。

gcc下的语言规范设置:
-std=iso9899:1990,-ansi或-std=c89 (三者完全等同)来指定完全按照c89规范,而禁止gcc对c语言的扩展。
-std=iso9899:199409 使用c95规范
-std=c99 或者 -std=iso9899:1999 使用c99规范。
-std=gnu89 使用c89规范加上gcc自己的扩展(目前默认)

-std=gnu99 使用c99规范加上gcc自己的扩展


     本文转自nathanxu 51CTO博客,原文链接:http://blog.51cto.com/nathanxu/6029,如需转载请自行联系原作者




相关文章
|
3月前
|
前端开发 C语言
gcc动态库升级
gcc动态库升级
|
1月前
|
编译器 Linux C语言
gcc的编译过程
GCC(GNU Compiler Collection)的编译过程主要包括四个阶段:预处理、编译、汇编和链接。预处理展开宏定义,编译将代码转换为汇编语言,汇编生成目标文件,链接将目标文件与库文件合并成可执行文件。
69 11
|
1月前
|
Unix 编译器 Linux
1.8.3 GNU编译器集合和LLVM项目
GNU项目自1987年起致力于开发自由UNIX软件,其成果之一GNU编译器集合(GCC)在指导委员会领导下持续演进,紧跟C语言标准。GCC适用于多种平台如UNIX、Linux和Windows,并常通过gcc或cc命令调用。另一方面,起源于2000年伊利诺伊大学研究项目的LLVM,提供了另一种开源编译器集合,其Clang编译器处理C代码,自2012年起成为FreeBSD默认C编译器,并良好支持最新C标准。
34 1
|
3月前
|
编译器 开发工具 C语言
Gcc 链接文件
Gcc 链接文件
38 4
|
3月前
|
编译器 C语言 C++
MinGW安装gcc
MinGW安装gcc
93 0
|
5月前
|
自然语言处理 编译器 Go
GCC:GNU编译器
GCC:GNU编译器
|
5月前
|
Java 编译器 Linux
技术经验解读:【转载】详解GCC的下载和安装(源码安装)
技术经验解读:【转载】详解GCC的下载和安装(源码安装)
172 0
|
5月前
|
C语言
关于如何解决mingw64安装后配置完环境变量仍然执行不了gcc命令
关于如何解决mingw64安装后配置完环境变量仍然执行不了gcc命令
|
6月前
|
C语言
gcc的简易用法(编译、参数与链接)
【5月更文挑战第14天】gcc的简易用法(编译、参数与链接)。
60 1
|
6月前
|
Unix Java 编译器
安装gcc
【5月更文挑战第14天】安装gcc。
116 1