分类: C/C++
2008-04-23 20:08:05
执行宏定义(替换)
简单宏定义
define
宏名 串(宏体)
如:#define PI 3.14159
宏定义的作用
宏定义后,该程序中宏名就代表了该字符串
说明
#undef
终止宏定义的作用于:
如:#undef PI
宏定义的嵌套使用
#define
R 3.0
#define
PI 3.1415926
#define
L 2*PI*R /*宏体是表达式*/
#define
S PI*R*R
int
main()
{
printf(“L=%f\nS=%f\n”,
L, S);
return
0;
}
带参数的宏定义
一般形式:
#define
宏名(参数表) 字符串
如:#define
S(a,b) a*b
带实参的宏名展开时,宏名被宏体替换,宏体中的形参按从左到右的顺序被实参替换 如:area=S(3,2);展开为:area=3*2;
宏定义与函数的区别总结:
引用宏只占编译时间,不占运行时间;
引用宏没有返回值
如:
#define
squ(u)
n*n
int
main(void)
{printf(“%f\n”,
27.0/squ(3.0));}
宏名与形参无类型,只是一个符号代表
实参为表达式:
函数调用是先计算出实参的值,再将值传递给形参;宏的引用是用 用表达式替换形参
如:定义:#define S(a,b) a*b
引用:S(a+c, b+c)
展开:a+c*b+c
包含文件
文件包含预处理(#include)
一个源文件可以将另一个源文件的全部内容包含进来
#include
命令有两种格式
#include
<文件名> 包含标准头文件(/usr/include下的)
#include
“文件名”
包含自定义的头文件(在当前目录)
条件编译
控制条件为常量表达式的条件编译形式一
#if
常量表达式
程序段
#endif
功能:
常量表达式非0时,程序段被编译。否则程序段不被编译。
控制条件为常量表达式的条件编译形式二
#if
常量表达式
程序段1
#else
程序段2
#endif
功能:略
控制条件为常量表达式的条件编译形式三
嵌套形式:
#if
常量表达式1
程序段1
#elif
常量表达式2
程序段2
……
#elif
常量表达式n
程序段n
#else
程序段n+1
#endif
控制条件为定义标识符的条件编译形式一
#ifdef 标识符
程序段
#endif
功能:
当标识符在该条件编译结构前已经定义时,程序段被编译,否则,程序 段不被编译
控制条件为定义标识符的条件编译形式二
#ifdef
标识符
程序段1
#else
程序段2
#endif
功能:略
控制条件为定义标识符的条件编译形式三
#ifndef
标识符
程序段1
#else
程序段2
#endif
功能:略