为编译器的实现者提供一个精确的定义:ANSI C
编译器的实现
常用C++编译器推荐_w3cschool https://www.w3cschool.cn/cpp/cpp-zxm72ps8.html
常用C++编译器推荐
本文将为大家带来的是几款简单实用的C++编译器(非IDE),希望大家喜欢。
GCC(GNU Compiler Collection)
官方网站: https://gcc.gnu.org/
GCC有Windows移植版本,比较出名的就是MinGW和TDM-GCC
GNU编译器套件(GNU Compiler Collection)包括C、C++、Objective-C、Fortran、Java、Ada和Go语言的前端,也包括了这些语言的库(如libstdc++、libgcj等等)。GCC的初衷是为GNU操作系统专门编写的一款编译器。GNU系统是彻底的自由软件。此处,“自由”的含义是它尊重用户的自由。
llvm+Clang
LLVM官方网站:http://llvm.org/
Clang官方网站:http://clang.llvm.org/get_started.html
LLVM是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-time)、运行时间(run-time)以及空闲时间(idle-time),对开发者保持开放,并兼容已有脚本。LLVM计划启动于2000年,最初由University of Illinois at Urbana-Champaign的Chris Lattner主持开展。2006年Chris Lattner加盟Apple Inc.并致力于LLVM在Apple开发体系中的应用。Apple也是LLVM计划的主要资助者.
Low Level Virtual Machine (LLVM) 是一个开源的编译器架构,它已经被成功应用到多个应用领域。Clang ( 发音为 /kl??/) 是 LLVM 的一个编译器前端,它目前支持 C, C++, Objective-C 以及 Objective-C++ 等编程语言。Clang 对源程序进行词法分析和语义分析,并将分析结果转换为 Abstract Syntax Tree ( 抽象语法树 ) ,最后使用 LLVM 作为后端代码的生成器。
Clang 的开发目标是提供一个可以替代 GCC 的前端编译器。与 GCC 相比,Clang 是一个重新设计的编译器前端,具有一系列优点,例如模块化,代码简单易懂,占用内存小以及容易扩展和重用等。由于 Clang 在设计上的优异性,使得 Clang 非常适合用于设计源代码级别的分析和转化工具。Clang 也已经被应用到一些重要的开发领域,如 Static Analysis 是一个基于 Clang 的静态代码分析工具。
Watcom C/C++
官方网站:http://www.openwatcom.org/index.php/Download
在DOS开发环境中,Watcom C/C++ 编译器 以编译后的exe运行高速而著称,且首个支持Intel 80386 "保护模式"的编译器。于90年代中期,大批的雄心技术游戏(例如 Doom、Descent、Duke Nukem 3D 都以 Watcom C 写成)
Watcom C/C++ 编译器、Watch Fortran 编译器 经已在不其先前所属公司Sybase售卖, 而被 SciTech 软件公司 作为 Open Watcom 开源包 发行。类似于其他的 开源编译器(例如 [GCC])项目,Watcom C代码小而便携, 其编译器后端(代码生成器)的目标码可变。该编译器可在DOS、OS/2、Windows等操作系统上运行,并生成各种可运行的(不必是该操作系统的)代码。该编译器支持Novell NetWare的 NLM 目标码。目前正进行 为 Linux[1] 、modern BSD (例如FreeBSD) 操作系统 重定目标码, 以便在 x86、PowerPC 及 其它处理器上运行。Open Watcom C/C++ 的1.4版于2005年12月发行,采用 Linux x86 为实验目标, 支持NT、OS/2等host平台. 曾有某被弃置的QNX版本,但其编译所须的库并未开源发行。当前最近的稳定版是1.9版,在2010年6月发行。
Digital Mars
官方网站:http://www.digitalmars.com/
DigitalMars是一款高性能的编译器,功能包含,快速编译/链接时、强大的优化技术、Contract设计、完整的资源库、浏览HTML文档,反汇编、库、资源编译器等。命令行及GUI版本、教程、代码示例、在线更新、标准模板库等等。
MSVC系列
与Visual Studio集成发布,微软自己的编译器,VS是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具、代码管控工具、集成开发环境(IDE)等等。所写的目标代码适用于微软支持的所有平台,包括Microsoft Windows、Windows Mobile、Windows CE、.NET Framework、.NET Compact Framework和Microsoft Silverlight 及Windows Phone。
Borland系列(turbo c和Borland C++)
Borland C++ Builder Compiler 是一个 BC编译器。它是用来优化 BC 开发系统的工具。它包括最后版本的 ANSI/ISO C++ 语言的支持,包括 RTL,C++ 的 STL框架结构支持。Turbo C(TC)是其早期的命令行编译器作品
Intel C++
Intel C++ Compiler (简称 icc 或 icl)是美国 Intel 公司开发的 C/C++编译器,适用于 Linux、Microsoft Windows 和 Mac OS X 操作系统。
Intel 编译支持 IA-32、Intel 64、Itanium 2、Intel Atom 处理器和某些非 Intel 的兼容处理器(例如某些 AMD 处理器)。开发人员应当检查系统需求。适用于 IA-32 和 Intel 64 的 Intel C++ 编译器的主要特点是自动向量化器,它能够生成 SSE、SSE2 和 SSE3 的 SIMD 指令及其适用于 Intel 无线 MMX 和 MMX 2 的嵌入式变种。
Intel C++ Compiler 进一步支持 OpenMP 3.0 和适用于对称多处理的自动并行化。借助于 Cluster OpenMP 的附加能力,编译器还可为分布存储多处理根据 OpenMP 指示自动生成消息传递接口调用。
Intel C++ Compiler 可通过四种方式获得,它分别是 Intel Parallel Studio、Intel C++ Compiler 专业版、Intel 编译器套装和 Intel Cluster Toolkit 编译器版的一部分。该编译器的最新发布是 Intel C++ Compiler 14.0 版本
TCC(Tiny C Compiler)
Tiny C Compiler(缩写为TCC, tCc或TinyCC)用于x86(16/32位)或是x86-64(64位)系统的C compiler,而开发者为Fabrice Bellard。软件是设计用于低级电脑环境,或是于磁盘容量有限的空间中(1.44磁片或是硬盘)。软件可以适用于Windows、Linux、Unix操作系统,而最新版本为0.9.26(Feb 15, 2013)。TCC是在GNU宽通用公共许可证(LGPL)协议规范下发布。作者是大神法布里斯·贝拉(FabriceBellard)
TCC符合ANSI C(C89/C90)规范,Tiny C Compiler Reference Documentation accessed on 2008-08-07]亦符合新版的ISO C99标准规范,与GNU C扩展的内嵌汇编语言(即inline assembler,内联汇编大陆用语)功能汇编语言。
而Google Andriod系统内亦曾经内置于其中,于Andriod 2.0版本中
如果是多个 c 代码的源码文件,编译方法如下:
$ gcc test1.c test2.c -o main.out
$ ./main.out
test1.c 与 test2.c 是两个源代码文件。
[xiaole@localhost ucn]$ cat hw.c #include <stdio.h> int main(){ printf("I am alive! Beware.\n"); getchar(); return 0; }[xiaole@localhost ucn]$ gcc hw.c -v -o hw 使用内建 specs。 COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper 目标:x86_64-redhat-linux 配置为:../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux 线程模型:posix gcc 版本 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) COLLECT_GCC_OPTIONS='-v' '-o' 'hw' '-mtune=generic' '-march=x86-64' /usr/libexec/gcc/x86_64-redhat-linux/4.8.5/cc1 -quiet -v hw.c -quiet -dumpbase hw.c -mtune=generic -march=x86-64 -auxbase hw -version -o /tmp/ccaPN4UH.s GNU C (GCC) 版本 4.8.5 20150623 (Red Hat 4.8.5-36) (x86_64-redhat-linux) 由 GNU C 版本 4.8.5 20150623 (Red Hat 4.8.5-36) 编译,GMP 版本 6.0.0,MPFR 版本 3.1.1,MPC 版本 1.0.1 GGC 准则:--param ggc-min-expand=100 --param ggc-min-heapsize=131072 忽略不存在的目录“/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include-fixed” 忽略不存在的目录“/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../x86_64-redhat-linux/include” #include "..." 搜索从这里开始: #include <...> 搜索从这里开始: /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include /usr/local/include /usr/include 搜索列表结束。 GNU C (GCC) 版本 4.8.5 20150623 (Red Hat 4.8.5-36) (x86_64-redhat-linux) 由 GNU C 版本 4.8.5 20150623 (Red Hat 4.8.5-36) 编译,GMP 版本 6.0.0,MPFR 版本 3.1.1,MPC 版本 1.0.1 GGC 准则:--param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: c0b461ba69dba093bfc939a7fa8b7724 COLLECT_GCC_OPTIONS='-v' '-o' 'hw' '-mtune=generic' '-march=x86-64' as -v --64 -o /tmp/ccaY6ksI.o /tmp/ccaPN4UH.s GNU assembler version 2.25.1 (x86_64-redhat-linux) using BFD version version 2.25.1-22.base.el7 COMPILER_PATH=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/:/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/:/usr/libexec/gcc/x86_64-redhat-linux/:/usr/lib/gcc/x86_64-redhat-linux/4.8.5/:/usr/lib/gcc/x86_64-redhat-linux/ LIBRARY_PATH=/usr/lib/gcc/x86_64-redhat-linux/4.8.5/:/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../:/lib/:/usr/lib/ COLLECT_GCC_OPTIONS='-v' '-o' 'hw' '-mtune=generic' '-march=x86-64' /usr/libexec/gcc/x86_64-redhat-linux/4.8.5/collect2 --build-id --no-add-needed --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o hw /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/crt1.o /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/crti.o /usr/lib/gcc/x86_64-redhat-linux/4.8.5/crtbegin.o -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../.. /tmp/ccaY6ksI.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/x86_64-redhat-linux/4.8.5/crtend.o /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/crtn.o [xiaole@localhost ucn]$
https://baike.baidu.com/item/头文件/10978258?fr=aladdin
- 中文名
- 头文件
- 外文名
- header files
- 应 用
- 含有功能函数
- 领 域
- C语言家族
- 功 能
- 保存程序的声明
- 相对概念
- 定义文件
传统 C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
#include<assert.h>//设定插入点 #include<ctype.h>//字符处理 #include<errno.h>//定义错误码 #include<float.h>//浮点数处理 #include<fstream.h>//文件输入/输出 #include<iomanip.h>//参数化输入/输出 #include<iostream.h>//数据流输入/输出 #include<limits.h>//定义各种数据类型最值常量 #include<locale.h>//定义本地化函数 #include<math.h>//定义数学函数 #include<stdio.h>//定义输入/输出函数 #include<stdlib.h>//定义杂项函数及内存分配函数 #include<string.h>//字符串处理 #include<strstrea.h>//基于数组的输入/输出 #include<time.h>//定义关于时间的函数 #include<wchar.h>//宽字符处理及输入/输出 #include<wctype.h>//宽字符分类 |
标准 C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
#include<algorithm>//STL通用算法 #include<bitset>//STL位集容器 #include<bits/stdc++.h>//编译器GCC 4.8支持的万能头文件,基本包含所有头文件 #include<cctype>//C字符处理 #include<cerrno>//C的错误报告机制 #include<clocale> #include<cmath>//兼容C语言数学库 #include<complex>//复数类 #include<cstdio>//C语言输入输出工具 #include<cstdlib>//C语言通用工具 #include<cstring>//C字符串 #include<ctime> #include<deque>//STL双端队列容器 #include<exception>//异常处理类 #include<fstream>//文件输入输出流 #include<functional>//STL定义运算函数(代替运算符) #include<limits> #include<list>//STL线性列表容器 #include<map>//STL映射容器 #include<iomanip> #include<ios>//基本输入/输出支持 #include<iosfwd>//输入/输出系统使用的前置声明 #include<iostream>//基本输入输出流 #include<queue>//STL队列容器 #include<set>//STL集合容器 #include<sstream>//基于字符串的流 #include<stack>//STL堆栈容器 #include<stdexcept>//标准异常类 #include<streambuf>//底层输入/输出支持 #include<string>//字符串类 #include<utility>//STL通用模板类 #include<vector>//STL动态数组容器 #include<cwchar> #include<cwctype> |
1
|
using namespace std; |
C99 版本
1
2
3
4
5
6
7
8
9
10
11
|
# include <complex.h> //复数处理 # include <fenv.h> //浮点环境 # include <inttypes.h> //整数格式转换 # include <stdbool.h> //布尔环境 # include <stdint.h> //整型环境 # include <tgmath.h> //通用类型数学宏 |