可以用#define命令将一个指定的标识符(即宏名)来代表一个字符串。定义宏的作用一般是用一个短的名字代表一个长的字符串。它的一般形式为:
#define 标识符 字符串
这就是已经介绍过的定义符号常量。如:
#define PI 3.1415926
还可以用#define命令定义带参数的宏定义。其定义的一般形式为:
#define 宏名(参数表) 字符串
如:
#define S(a, b) a*b //定义宏S(矩形面积),a?b为宏的参数
使用的形式如下:
area=S(3, 2);
用3?2分别代替宏定义中的形式参数a和b,即用3*2代替S(3, 2)。因此赋值语句展开为:
area=3*2;
由于C++增加了内置函数(inline),比用带参数的宏定义更方便,因此在C++中基本上已不再用#define命令定义宏了,主要用于条件编译中。
#include <iostream> using namespace std; #define RUN //在调试程序时使之成为注释行 int main( ) { int x=1, y=2, z=3; #ifndef RUN //本行为条件编译命令 cout<<"x="<<x<<", y="<<y<<", z="<<z<<"\n"; //在调试程序时需要输出这些信息 #endif //本行为条件编译命令 cout<<"x*y*z="<<x*y*z<<endl; }第3行用#define命令的目的不在于用RUN代表一个字符串,而只是表示已定义过RUN,因此RUN后面写什么字符串都无所谓,甚至可以不写字符串。在调试程序时去掉第3行(或在行首加//,使之成为注释行),由于无此行,故未对RUN定义,第6行据此决定编译第7行,运行时输出x,y,z的值,以便用户分析有关变量当前的值。运行程序输出:
原文地址:http://blog.csdn.net/namehybin/article/details/40679757