《C与指针》(Kenneth Reek)精读——第二章:基本概念(更新ing)

第二章:基本概念

2.1 环境

ANSI C(C语言的标准)在任何一种实现中,有两种不同的环境:翻译环境执行环境

翻译环境:源代码被转换成可执行的机器指令。

执行环境:用于实际执行代码。

这两种环境不必在同一台机器上,eg.交叉编译环境

2.1.1 翻译

翻译过程具体描述为,将一个或多个源文件经过 编译器(Compiler) 编译生成目标代码·obj或.o,产生的一个或多个目标代码通过 链接器(Linker) 链接捆绑,形成一个单一而完整的可执行程序.exe。对于libraries是指在链接的同时引入标准C函数库或个人程序库中任何被该程序所用到的函数。

编译过程也由几个阶段组成,主要由预处理器(preprocessor)处理解析(parse) 两个阶段组成。预处理器处理:在源代码上执行文本操作,eg.实际值代替由#define指令定义的符号和#include指令包含的文件内容。解析:判断语句的意思,绝大多数错误和警告产生的地方。

一、文件名约定

源代码:xxx.c

头文件:xxx.h

目标文件:UNIX系统中xxx.o,MS-DOS系统中xxx.obj

二、编译和链接

编译和链接C程序的特定命令在不同的系统中各不相同,以UNIX系统举例子,C编译器被称为cc

  1. 编译+链接.c文件

    powershell 复制代码
    cc main.c #编译+链接一个.c
    cc main.c test01.c test02.c	#编译+链接多个.c
  2. 编译.c+链接现存.o文件

    powershell 复制代码
    cc main.o test01.o test02.c

    为什么说是现存的.o文件呢?这里解释一下,在执行完cc main.c后,会产生一个称为a.out的可执行文件,而这中间会产生program.o的目标文件,目标文件在链接完毕后会自动删除。但是在执行完cc main.c test01.c test02.c(编译多个时),目标文件不会被删除,这就允许对程序进行修改后,只对改动过的源文件进行重新编译。

  3. 只编译

  4. 只链接

2.1.2 执行

2.2 词法规则

2.3 程序风格

总结

相关推荐
Yvemil76 分钟前
MQ 架构设计原理与消息中间件详解(二)
开发语言·后端·ruby
程序员是干活的7 分钟前
私家车开车回家过节会发生什么事情
java·开发语言·软件构建·1024程序员节
我是陈泽22 分钟前
一行 Python 代码能实现什么丧心病狂的功能?圣诞树源代码
开发语言·python·程序员·编程·python教程·python学习·python教学
优雅的小武先生33 分钟前
QT中的按钮控件和comboBox控件和spinBox控件无法点击的bug
开发语言·qt·bug
虽千万人 吾往矣39 分钟前
golang gorm
开发语言·数据库·后端·tcp/ip·golang
创作小达人41 分钟前
家政服务|基于springBoot的家政服务平台设计与实现(附项目源码+论文+数据库)
开发语言·python
郭二哈44 分钟前
C++——list
开发语言·c++·list
杨荧1 小时前
【JAVA开源】基于Vue和SpringBoot的洗衣店订单管理系统
java·开发语言·vue.js·spring boot·spring cloud·开源
ZPC82101 小时前
Python使用matplotlib绘制图形大全(曲线图、条形图、饼图等)
开发语言·python·matplotlib
镜花照无眠1 小时前
Python爬虫使用实例-mdrama
开发语言·爬虫·python