🍁博主简介:
🏅云计算领域优质创作者
🏅新星计划第三季python赛道第一名
🏅阿里云ACE认证高级工程师
🏅阿里云开发者社区专家博主
✒️博主微信:15575411187
💊交流社区:小鹏linux(个人社区)欢迎您的加入!
目录
1. 关于C/C++
C是一门古老的语言,在1969年由贝尔实验室设计开发,今天仍然是系统领域和高性能计算的主要选择。C语言具有高效、灵活、功能丰富、表达力强和较高的可移植性等特点。C++在C的基础上,支持了数据的抽象与封装、面向对象和泛型编程。功能与性能的平衡使C++成为了目前应用最广泛的系统编程语言之 一。 |
1.1 C语言简介
早期的C语言主要是用于UNIX系统。由于C语言的强大功能和各方面的优点逐渐为人们认识,到了八十年代,C开始进入其它操作系统,并很快在各类大、中、小和微型计算机上得到了广泛的使用。成为当代最优秀的程序设计语言之一。 C语言是当今最流行的程序设计语言之一,它的功能丰富、表达力强、使用灵活方便、应用面广、目标程序高、可植入性好,既有高级语言的特点,又有低级语言的许多特点,适合作为系统描述语言,既可以用来编写系统软件,也可以用来编写应用软件。C语言诞生后,许多原来用汇编语言编写的软件,现在都可以用C语言编写了(如UNIX操作系统),而学习和适用C语言要比学习和适用汇编语言容易得多。 |
1.2 C语言的特点
C语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。C语言的表现能力和处理能力极强。它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。它还可以直接访问内存的物理地址,进行位(bit)一级的操作。由于C语言实现了对硬件的编程操作,因此C语言集高级语言和低级语言的功能于一体。既可用于系统软件的开发,也适合于应用软件的开发。此外,C语言还具有效率高,可移植性强等特点。因此广泛地移植到了各类各型计算机上,从而形成了多种版本的C语言。 |
1.3 C语言版本
目前最流行的C语言有以下几种:
·Borland Turbo C++ [1] ·AT&T C 这些C语言版本不仅实现了ANSI C标准,而且在此新星计划第三季python赛道第一名上各自作了一些扩充,使之更加方便、完美 |
1.4 C++简介
在C的基础上,一九八三年又由贝尔实验室的Bjarne Strou-strup推出了C++。 C++进一步扩充和完善了C语言,成为一种面向 对象的程序设计语言。C++目前流行的集成开发环境最新版本是Borland C++4.5,Symantec C++6.1,和Microsoft VisualC++2017。C++提出了一些更为深入的概念,它所支持的这些面向对象的概念容易将问题空间直接地映射到程序空间,为程序员提供了一种与传统结构程序设计不同的思维方式和编程方法。因而也增加了整个语言的复杂性,掌握起来有一定难度。 |
1.5 C和C++关系
C是C++的基础,C++语言和C语言在很多方面是兼容的。因此,掌握了C语言,再进一步学习C++就能以一种熟悉的语法来学习面向对象的语言,从而达到事半功倍的目的。 C timeline 1978 k&R C---->1988 ANSI C-->1995 ISO C 学习C语言最经典的还是The C Programming Language, |
2. C/C++开发工具之GCC
本篇文章将介绍三款流行的C/C++开发工具,GCC、LLVM和Clang |
GCC(GNU Compiler Collection)是一套由GNU开发的编程语言编译器,是一套以GPL及LGPL许可证所发行的自由软件,也是GNU计划的关键部分。GCC(特别是其中的C语言编译器)通常被认为是跨平台编译器的事实标准。 |
GCC可处理C/C++,以及Fortran、Pascal、Objective-C、Java、Ada等多种语言 |
将C/C++代码运行在容器内的最简方法,就是将编译指令写入Dockerfile 中,然后使用此Dockerfile构建自定义镜像,最后直接运行此镜像,即可启动程序。 |
FROM gcc:4.9
COPY . /usr/src/myapp
WORKDIR /usr/src/myapp
RUN gcc -o myapp main.c
CMD ["./myapp"]
编辑main.c,内容如下: |
#include<stdio.h>
int main()
{
printf("Hello World\n");
return 0;
}
现在,就可以使用Dockerfile来构建镜像my-gcc-app: |
$ docker build -t gcc-image .
创建并运行此容器,会编译并运行程序,输出Hello World语句。 |
$ docker run -it --rm --name gcc-container gcc-image
Hello World
如果只需要容器编译程序,而不需要运行它,可以使用如下命令: |
$ docker run --rm -v "$(pwd)":/usr/src/myapp -w /usr/src/myapp gcc gcc -o myapp main.c
以上命令会将当前目录("$(pwd)")挂载到容器的/usr/src/myapp目录,并执行gcc-o myapp myapp.c。GCC将会编译myapp.c代码,并将生成的可执行文件输出至/usr/src/myapp文件夹。 |
3. C/C++开发工具之LLVM
LLVM(Low Level Virtual Machine)是伊利诺伊大学的一个研究项目,试图提供一个现代化的,基于SSA的编译策略,同时支持静态和动态编程语言。和之前为大家所熟知的JVM以及.net Runtime这样的虚拟机不同,这个虚拟系统提供了一套中立的中间代码和编译基础设施,并围绕这些设施提供了一套全新的编译策略(使得优化能够在编译、连接、运行环境执行过程中,以及安装之后以有效的方式进行)和其他一些非常有意思的功能。 |
Docker Hub中已经有用户提供了LLVM镜像,大家可以直接下载使用 |
$ docker pull imiell/llvm
4. C/C++开发工具之Clang
Clang是一个由Apple公司用C++实现、基于LLVM的C/C++/Objective C/Objective C++编译器,其目标就是超越GCC成为标准的C/C++编译器,它遵循LLVM BSD许可。Clang很好地兼容了GCC。 |
Clang特性包括: ※ 快:在OSX上的测试中,Clang比GCC 4.0快2.5倍。 ※ 内存占用小:Clang内存占用一般比GCC要小的多。 ※ 诊断信息可读性强:Clang对于错误的语法不但有源码提示,还会在错误的调用和相关上下文上有更好的提示。 ※ 基于库的模块化设计:Clang将编译过程分成彼此分离的几个阶段,将大大增强IDE对于代码的操控能力。 |
在Docker Hub中已经有用户提供了Clang的镜像,大家也可以直接下载使用: |
$ docker pull bowery/clang