当前位置:文档之家› 嵌入式系统程序设计

嵌入式系统程序设计


1. 宏定义
不带参数宏定义
一般形式: #define 宏名 [宏体] 功能:用指定标识符(宏名)代替字符序列(宏体)
定义位置:任意(一般在函数外面) 作用域:从定义命令到文件结束 #undef可终止宏名作用域
格式: #undef 宏名 宏展开:预编译时,用宏体替换宏名---不作语法检查 引号中的内容与宏名相同不置换
} #undef ID #define ID 0 max() { }
YES原作用域 YES新作用域
1. 宏定义
不带参数宏定义
一般形式: #define 宏名 [宏体] 功能:用指定标识符(宏名)代替字符序列(宏体)
定义位置:任意(一般在函数外面) 作用域:从定义命令到文件结束 #undef可终止宏名作用域
宏定义中使用必要的括号()
1. 宏定义
不带参数宏定义
/* ch3_一1.c般形*式/ : #define 宏名 [宏体]
#include <stdio.h>
#define A功能:用指定标识符(宏名)代替字符序列(宏体)
int main()
{ #ifde定f A义位置:任意(一般在函数外面) pr作in用tf(域"A:h从as定b义ee命n d令ef到ine文d\件n结");束
#elpsre#inutfn("dAehfa可s n终o止t b宏ee名n d作ef用ine域d\n"); #endi格f 式: #undef 宏名 } re宏tu展rn开0;:预编译时,用宏体替换宏名---不作语法检查
输出为: “A引h号as 中be的en内de容fi与ne宏d”,名即相使同把宏不定置义换改为: #输d出e仍fin旧e为A:宏“定A h义a0s可b嵌ee套n d,ef不in能ed递”。归
宏定义中使用必要的括号()
宏体可以省略,表示宏名已被定义过
带参数宏定义
一般形式: #define 宏名(参数表) 宏体
例 #define T(m,n) m*n
不能加空格
………..
area=T(3,2);
宏展开: area=3*2;
宏展开:形参用实参换,其它字符保留
例 #define T (m, n) m*n 相当于定义了不带参宏T,其宏体为“(m, n) m*n”
预处理语句的书写规则
作用:对源程序编译之前做一些处理, 生成扩展C源程序
格式:
“#”开头 占单独书写行 语句尾不加分号
1. 宏定义
不带参数宏定义
一般形式: #define 宏名 [宏体] 功能:用指定标识符(宏名)代替字符序列(宏体)
1. 宏定义
不带参数宏定义
一般形式: #define 宏名 [宏体] 功能:用指定标识符(宏名)代替字符序列(宏体)
10 DIS1+10
格式: #undefvar=宏DIS名2*2;
宏展开:预编译时宏展,用开宏:体va替r= 换10宏+1名0 *-2-; -不作语法检查
引号中的内容与宏名相同不置换
宏定义可嵌套,不能递归
例 #define ID ID + 1 ()
1. 宏定义
不带参数宏定义
一般形式: #define 宏名 [宏体] 功能:用指定标识符(宏名)代替字符序列(宏体)
例 #define ID 1 语句printf( "ID" );
会输出ID,而非1
1. 宏定义
不带参数宏定义
一般形式: #define 宏名 [宏体] 功能:用指定标识符(宏名)代替字符序列(宏体)
定义位置:任意(一般在函数外面)
作用域:从定义命令到文件结束
#undef可终止例宏名##dd作eeff用iinnee域DDIISS12
如 #define YES 1 #define NO 0 #define PI 3.1415926 #define OUT printf(“Hello,World”);
1. 宏定义
不带参数宏定义
宏体可缺省,表示宏名 定义过
一般形式: #define 宏名 [宏体]
功能:用指定标识符(宏名)代替字符序列(宏体)
带参数宏定义
一般形式: #define 宏名(参数表) 宏体
例 #define T(m,n) m*n ……….. area=T(3,2);
宏展开: area=3*2; 宏展开:形参用实参换,其它字符保留 宏体及各形参外一般应加括号()
例 #define CUBE(x) x*x*x a=4; b=6; z=CUBE(a+b);
格式: #undef 宏名 宏展开:预编译时,用宏体替换宏名---不作语法检查

if(x==YES)
printf(“correct!\n”);
else if (x==NO) printf(“error!\n”);
展开后: if(x==1)
printf(“correct!\n”);
else if (x==0) printf(“error!\n”);
定义位置:任意(一般在函数外面) 作用域:从定义命令到文件结束 #undef可终止宏名作用域
格式:例 ##deufinnedeDfIS1 宏10名 宏展开:预#d编efi译ne时D,用IS2宏体(DI替S1换+1宏0)名---不作语法检查
var=DIS2*2;
引号中宏的展内开容:与va宏r=名(1相0+同10不) *置2; 换 宏定义可嵌套,不能递归
格式: #undef 宏名
1. 宏定义
不带参数宏定义
一般形式: #define 宏名 [宏体] 功能:用指定标识符(宏名)代替字符序列(宏体)
定义位置:任意(一般在函数外面)
作用域:从定义命令到文件结束 #undef可终止宏例名作#d用efi域ne ID 1
格式: #undef m{ in(名)
如 #define YES 1 #define NO 0 #define PI 3.1415926 #define OUT printf(“Hello,World”);
1. 宏定义
不带参数宏定义
一般形式: #define 宏名 [宏体] 功能:用指定标识符(宏名)代替字符序列(宏体)
定义位置:任意(一般在函数外面) 作用域:从定义命令到文件结束 #undef可终止宏名作用域
相关主题