嵌入式学习

C提供的预处理功能主要有以下3种:
1. 宏定义
2. 文件包含
3. 条件编译
分别用宏定义命令、文件包含命令、条件编译命令来实现。为了与一般C语句相区别,这些命令以符号“#”开头。

用一个指定的标识符(即名字)来代表一个字符申,它的一般形式为
#define 标识符 字符串
这就是已经介绍过的定义符号常量,例如:

#define PI 3.1415926

它的作用是在本程序文件中用指定的标识符 PI 来代替“3.1415926”这个字符串,在编译预处理时,将程序中在该命令以后出现的所有的 PI 都用“3.1415926”代替。

这种方法使用户能以一个筒单的名字代替一个长的字符串,因此把这个标识符(名字)称为“宏名”,在预编译时将宏名替换成字符串的过程称为“宏展开”。#define 是宏定义命令。

带参数的宏定义:不是进行简单的字符串替换,还要进行参数替换。其定义的一般形式沩
#define 宏名(参数表)字符串
字符串中包含在括号中所指定的参数。

文件包含

所谓“文件包含”处理是指一个源文件可以将另外一个源文件的全部内容包含进来,即将另外的文件包含到本文件之中。C语言提供了#include 命令用来实现“文件包含”的操作。其一般形式为

#include <文件名>    或   #include "文件名"

注意:在编译时并不是对两个文件分别进行编译,然后再将它们的目标程序连接的,而是在经过编译预处理后将头文件 format. h 包含到主文件中,得到一个新的源程序,然后对这个文件进行编译,得到一个目标(.obj)文件。被包含的文件成为新的源文件的一部分,而单独生成目标文件。

一般情况下,源程序中所有行都参加编译。但是有时希望程序中一部分内容只在满足一定条件时才进行编译,也就是对这一部分内容指定编译的条件,这就是“条件编译”。
有时,希望在满足某条件时对某一组语句进行编译,而当条件不满足时则编译另一组语句。

(1)

它的作用是若所指定的标识符已经被# define 命令定义过,則在程序编译阶段樂译O1程序段1;否则编译程序段2。其中#else 部分可以没有,即

(2)

只是第一行与第一种形式不同:将“ifdef”改为“ifnde”。它的作用是若标识符未被定义过则编译程序段1;否则编译程序段2。这种形式与第一种形式的作用相反。

(3)

它的作用是当指定的表达式值为真(非零)时就编译程序段1,否则编译程序段2。可以事先给定条件,使程序在不同的条件下执行不同的功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值