全部博文(290)
分类: C/C++
2007-11-02 11:52:14
定义:预处理是有一组命令组成的,由于这些命令是在程序正常编译之前被执行而得名.
特点:
命令左边加#号字符作为该命令的标志.
预处理命令不是语句,使用时不加:号结束标志.
预处理命令可以放在程序中的任何位置,无论是开头,中间,还是结尾.
写法:
一般单独占一行,如果写成多行,要加续行符.('\')
类型:1:宏定义命令
a:简单宏定义
定义:用来将一个标识符定义为一个字符串,该标识符称为宏名,被定义的字符串称为宏名,字符串叫替换文本
格式: #define <宏名> <字符串>
执行:将其程序中出现的宏名用被定义的字符串替换,即宏替换,不做语法检查
b:带参数的宏定义
定义:指在宏名后面跟有参数表.
格式: #define
执行:只替换宏体中与参数表中相同的标识符,即用实参代替形参.如:
#define ADD(x,y) (x)+(y) //定义
s=ADD(5,8); //程序中的语句
被替换后:s=5+8 //5,8是实参,定义中的(X)(Y)是形参
通常在宏体的定义中为形参加上括号,这样可以避免宏替换所出现的二义性.
取消宏定义:
#undef <宏名> name用来指出希望取消的已定义的宏名.
寿命:即作用域-从定义时开始,到被取消时终止.如果没被取消,到此文件结束为止.
作用:用来定义某些编译内容要在满足一定条件的时候在参与编译的程序段,否则不参与编译.一般将条件编译命令用在以下两种情况.
1.使同一个源程序在不同的编译条件下产生不同的目标代码.
2.利用条件编译在调试程序的时候增加一些调试语句,实现目标跟踪.
四: 类型定义
定义:是指对现在已经有的类型起个别名作为一种新类型.
优点:
1.简化类型的书写.长名变短名.
2.给名字增加一些新信息.//如: int a; typedef int WIDTH
3.增加类型的安全性.用类型定义定义变量时,要进行类型检查.
定义新类型的方法:
typedef <已有类型名> <新类型名表>
类型定义可以嵌套,即可以用已经定义的类型再来定义类型.
如:
typedef double length
typedef length *point
point p1,p2;
这里p1,p2是指向DOUBLE型变量的指针.而所指向的变量是用来表示长度的.