C语言的环境分为编译环境和运行环境,编译环境是指将C语言代码转换为机器指令代码的环境,运行环境是指转换后的运行硬件和系统软件。
为什么要有环境的概念呢?
因为第一C语言毕竟是一种高级语言,计算机及机器本质上是不识别这种类似人类语言的,第二,虽说都是计算机或者机器,但又有好多种机器,具体到机器的指令又有好多种,所以C语言需要不同的环境。
运行环境和编译环境的关系:
机器的环境决定编译的环境,具体来说,机器指令决定编译环境,编译环境针对机器环境,即不同的机器指令对应不同的编译器。
在机器指令(即汇编指令)基础上,不同的操作系统软件决定不同的编译环境,即不同的操作系统下有对应的C语言编译器。
主流典型的环境:
在x86/x64机器指令的机器上,UNIX操作系统的编译环境为cc,Linux操作系统编译环境为GCC,Windows操作系统编译环境有微软的MSVC,也有对应的GCC。
在ARM指令的机器上,有arm GCC,也有arm公司的ADS和KEIL等、IAR编译器。
在MIPS指令的机器上,有对应的MIPS GCC以及厂家特有的编译器。
总之,每一种机器及操作系统对应每一种编译环境(编译器),每一种机器(CPU)及每一种操作系统又是C的运行环境。
2. C语言程序的文件结构C语言源文件包括2种文件类型,一种是后缀h的文件,叫作头文件,一种是后缀c的文件叫作源文件,比如:main.c /main.h,分成这两种的目的是h文件负责函数、变量及宏等的声明(即定义),c文件负责实现。
C语言源代码文件可以由多个文件组成,每一种文件里面是多个函数,多个文件的目的是为了方便编写和管理,最终转换成机器可执行程序以后就会变成一个文件或者一堆代码和数据。
3. C语言转换为机器代码的基本步骤第一步,对每个C源代码文件进行编译,编译成中间文件;
以gcc为例,编译一个文件:gcc -c cfirst.c -o cfirst.o //在当前文件夹下生成cfirst.o 。
第二步,对所有的中间文件执行链接操作,组合成一个对应平台的可执行文件。
链接一个文件:gcc cfirst.o -o cfirst //链接后生成cfirst可执行文件
对C语言程序编译和链接的工具即编译器套件,编译和链接是一项计算机领域的关键和核心技术,都是真正的高手和大厂掌握,技术的好坏在于生成机器代码的执行效率和容量,编译技术需要对机器(CPU)本身、操作系统非常熟悉以及对数学非常精通,要想做基础软件必须解决编译器的问题。
IDE工具会隐藏这些步骤,比如Visual Studio.
4. C语言的执行过程第一步,操作系统把可执行程序放到内存,然后初始化程序需要用到的内存。
第二部,调用main函数对应的机器指令,调试过程中看上去就是调用main函数,c语言执行的开始调用main函数是大家约定的标准。
5. C语言的一些基本语法1) 每一行必须用英文的分号结束;
2) C语言有关键字,关键字相当于指令,关键字不能用作自定义命名;
3) 对变量、函数、宏定义等命名用的字符串只能由26个大小写字母、0-9的数字和下划线组成,且数字不能作为开始符号;
4) C语言里的整数和小数直接写,单个字符需要用英文单引号引起来,多个连续字符(字符串)需要用英文双引号引起了;
5) C语言里还有一种转义符的用法,就是在赋给字符或字符串变量时,实际的意思与书面的意思不一致,典型的有 \n 表示换行、\r表示回车符、\""表示内部引号;
6) C语言单行注释前面用双斜杠//标识,多行注释描述用 /* 注释描述 */ 包围。
…………………………
6. Linux 编写多个c源文件示例编写Add.c 、Add.h
编写Multiplication.h、Multiplication.c
编写main.c
编译和链接多文件: