《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 程序风格

总结

相关推荐
辞旧 lekkk6 小时前
【Qt】信号和槽
linux·开发语言·数据库·qt·学习·mysql·萌新
2zcode7 小时前
运动模糊图像复原的MATLAB仿真与优化
开发语言·matlab
袁雅倩19977 小时前
当吸尘器、筋膜枪都用上Type-C,供电方案该怎么选?浅谈PD取电芯片ECP5702的应用
c语言·开发语言·支持向量机·动态规划·推荐算法·最小二乘法·图搜索算法
Aaswk8 小时前
Java Lambda 表达式与流处理
java·开发语言·python
万邦科技Lafite8 小时前
京东item_get接口实战案例:实时商品价格监控全流程解析
java·开发语言·数据库·python·开放api·淘宝开放平台
Cyber4K9 小时前
【Python专项】进阶语法-系统资源监控与数据采集(1)
开发语言·python·php
Le_ee10 小时前
ctfweb:php/php短标签/.haccess+图片马/XXE
开发语言·前端·php
yong999010 小时前
MATLAB读取高光谱图像
开发语言·matlab
2zcode11 小时前
基于MATLAB的肝病风险评估与分期分析系统设计与实现
开发语言·matlab
小小de风呀11 小时前
de风——【从零开始学C++】(五):内存管理
开发语言·c++