C学习_程序执行步骤-1.16

学习内容:

一.程序执行总览

在这里插入图片描述

二.翻译环境

将源代码.c翻译为可执行的机器指令.exe,分为一下两部分:
1)编译:每个.c文件经过编译器处理变为目标文件.obj
2)链接:链接器将项目下的所有目标文件和链接库链接生成可执行程序.exe

1.编译细分步骤

1)预处理:完成文本操作,包括头文件的包含,#define定义的替换,删除注释等。
2)编译:将c代码转换为汇编代码,在语法语义词法的分析上。(完成符号汇总
3)汇编:把汇编代码转换为目标文件,即二进制指令。(根据编译的符号汇总生成符号表

2.符号汇总和符号表

符号汇总:将全局变量符号汇总,引入的外部符号不知地址位置。
符号表:收集符号汇总,将符号与其相应地址一一对应。

3.链接作用

将所有文件的符号表合并,重复的重新定位添加正确地址。

三.预处理

1.#define(纯粹的替换)

1)定义标识符:#define + name + 你想替换的东西
2)定义宏:带有参数的定义,类似函数,#define name(参数) stuff(要使用括号让计算逻辑严谨)
3)#undef:取消你之前的定义。

#define和#实现文本参数化
#define  Add(X)   printf("an" #X "is good");

因为#X将X变为对应的字符串形式,即有双引号,”X",这样printf可以识别做到文本的连续。
Add(a):生成 an a is good。

#define宏参数尽可能不用副作用宏参数

类似a++这种,因为#define是存粹的 替换,每次X替换为a++后就需要改变一次a的值,会让a的值变得不可控。

#define宏和函数比较

这里就说些主要的:
宏:无类型,在翻译环境下的预处理阶段从而不能调试,优先级容易出问题;宏可用类型作参数。

2.#include

本地文件用:#include “local.h" //先查找本地项目文件下,没找到local.h再去库函数里找
库文件用:#include <stdio.h> //就在库函数里找
防止头文件多次被包含:#pragma one//头文件只能包含一次。

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值