- 3
- 0
- 约4.24千字
- 约 18页
- 2020-02-07 发布于辽宁
- 举报
一、宏定义 1. 不带参数的宏定义 用一个指定的标识符(即名字)来代替一个字符串,它的 一般形式为: #define 标识符 字符串 例如:#define N 10 其中:#define是宏定义命令;N是标识符,称为“宏名”; 10是字符串。在预编译时将宏名替换成字符串的过程称为“宏 展开”。 例8.1 举例说明不带参数的宏定义的方法。 源代码如下: #include stdio.h #define N 10 //宏定义 void main( ) { int i,a[N]; for(i=0;iN;i++) scanf(%d,a[i]); for(i=0;iN;i++) printf(%d ,a[i]); printf(\n); } 宏展开后的代码如下: #include stdio.h void main( ) { int i,a[10]; for(i=0;i10;i++) scanf(%d,a[i]); for(i=0;i10;i++) printf(%d ,a[i]); printf(\n); } 说明: 在编译之前,执行了宏展开。然后对宏展开后的源程序进行编译、连接、执行。 经过预处理后源程序不再包括预处理命令了。 在C语言较早的时期,预处理器是一个单独的程序。如今,预处理器通常和编译器集成在一起。然而,将预处理器和编译器认为是不同的程序仍然是有用的。 宏名一般习惯用大写字母表示,以便与变量名相区别。 使用宏名代替一个字符串,可以减少程序中重复书写某些字符串的工作量。当需要改变某一个常量时,可以只改变#define命令行,一改全改。 例如:#define N 10 int a[N]; //数组可以存放10个元素 改为:#define N 50 int a[N]; //数组可以存放50个元素 使用宏定义,可以提高程序的通用性。 宏定义不是C语句,不必在行末加分号。 #define命令出现在程序中函数的外面,宏名的有效范围为定义命令之后到本源文件结束。通常,#define命令写在文件开头,函数之前,作为文件的一部分,在此文件范围内有效。 可以用#undef命令终止宏定义的作用域。 例如:#define G 9.8 void main( ) //G开始有效 { … } #undef G //使G无效 f( ) { … //f( )不能使用G } 宏定义是专门用于预处理命令的一个专用名词,它与定义变量的含义不同,只作字符替换,不分配内存空间。 2. 带参数的宏定义 带参数的宏定义不但要进行字符串替换,还要进行参数替换,其定义 的一般形式为: #define 宏名(参数表) 字符串 其中:字符串中包含参数表中所指定的参数。 例8.2 举例说明带参数的宏定义的方法。(实参是常量) 源代码如下: #include stdio.h #define S(a,b) a*b //形参 void main( ) { int area; area=S(3,2); //宏调用,实参是常量 printf(%d\n,area); } 宏展开后的代码如下: #include stdio.h void main( ) { int area; area=3*2; printf(%d\n,area); } 例8.3 举例说明带参数的宏定义的方法。(实参是变量) 源代码如下: #include stdio.h #define S(r) 3.1415926*r
您可能关注的文档
最近下载
- 2024年鲁教版五四制六年级上册数学期末综合检测试卷及答案.docx VIP
- 手术机器人行业深度报告:革命性外科手术工具,国产手术机器人进入高速发展阶段.pptx VIP
- 云驾岭矿矿井煤矿毕业设计报告.doc VIP
- BP85226D参考设计_-5V300mA 晶丰明源家电电源.pdf VIP
- SH∕T 0248-2019 柴油和民用取暖油冷滤点测定法.pdf
- Tesseral-中文-用户手册(全).pdf VIP
- 工科类本科数学基础课程教学基本要求.pdf VIP
- 低空环境智能感知关键技术及应用-VALSE 2025-2025.pdf VIP
- 样板支部申报书模板2.pdf VIP
- 《机械制造技术》课程标准.docx VIP
原创力文档

文档评论(0)