C语言——预编译

概述

c 语言编译的 4 个阶段 : 预编译、编译、汇编、链接
预处理阶段会在源代码中查找预编译指令 , 其中主要是 头文件展开(include), 宏替换
(defind) , 选择性编译(ifdef) 三种指令
预处理命令以符号 # 开头。
好处 :
1, 扩展了 c 程序设计的环境
2, 简化程序开发过程
3, 提高程序的可读性
注意 :
1, 实际上不是 c 语言的一部分
2, 预编译指令在编译前由预处理程序对源文件的预处理文件进行加工。

include

作用

引入头文件
在预编译编译阶段会将该行代码替换为引入的头文件中的代码

语法

语法1:
#include <要引入的头文件名>
用尖括号包含头文件,在系统指定的路径下找头文件
语法2:
#include "要引入的头文件名"
用双引号包含头文件,先在当前目录下找头文件,找不到,再到系统指定的路径下

注意

1,include 经常用来包含头文件,可以包含源文件,但是大家不要包含源文件 , 头文件
中可以定义函数 , 但是不建议定义
:
test.c
void method()
{
}
arr.c
#include "test.c"
xxx
main.c
#include "test.c"
#include "arr.c"
int main()
{
}
void method()
{
}
void method()
{
}
xxx
2, 预处理只是对 include 等预处理操作进行处理并不会进行语法检查 , 编译阶段才会
检查语法是否有误

define : 宏

分类

不带参宏
带参宏

不带参宏

步骤:

1,宏定义

静态定义
#define 宏名称 值
注意 : 值可有可无
动态定义
在代码编译时加 -D 宏名 = 值 或 -D 宏名

2,使用宏

宏名称

3,取消宏

#undef 宏名称
注意 : 一旦取消宏 , 该宏不能在使用
使用范围 :
宏定义开始到取消宏

带参宏

步骤:

1,宏定义

#define 宏名称(形参列表) 代码;

2,使用宏

宏名称(实参列表);

3,取消宏

#undef 宏名称

带参宏与带参函数的区别

带参宏被调用多少次就会展开多少次,执行代码的时候没有函数调用的过程,不需
要压栈弹栈。所以带参宏是浪费了空间,因为被展开多次,节省时间。
带参函数,代码只有一份,存在代码段,调用的时候去代码段取指令,调用的时候
要,压栈弹栈。有个调用的过程
所以说,带参函数是浪费了时间,节省了空间。
带参函数的形参是有类型的,带参宏的形参没有类型名。

选择性编译

作用

选择性的对代码进行编译

语法

头文件模版

#ifndef 自定义宏
#define 自定义宏
引入头文件
声明变量
声明函数
#endif
注意
此时需在该头文件对应的源文件中引入该头文件
在使用该源文件中函数的源文件中在引入该头文件 , 此时不会重复声明
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值