青少年编程知识记录 codecoming

C++中的宏

一、预处理和编译器

    首先,预编译器就是在编译器之前运行,换句话说,预编译器根据程序员的指示,决定实际要编译的内容。预编译器编译指令都以 # 开头。

例如:

1.  #include<iostream>    2.  #define ARRAY_SIZE=25  int a[ARRAY_SIZE]    3.  #define SQUARE(x) ((x)*(x))  int x=SQUARE(5)

本文主要说明用一是用宏定义常量,二是用宏定义宏函数。



二、使用#define定义常量

使用#define定义常量非常简单。

比如下面这样:

#include<iostream>  #define N 365  using namespace std;  int main(){  	cout<<N<<endl;  	return 0;   }

常见的还有定义数组,

#include<iostream>  #define N 365  using namespace std;  int a[N];   int main(){  	cout<<N<<endl;  	return 0;   }



三、带参数的宏定义

格式:

#define <宏名> (<参数表>) <宏体>

例子:

#define A(x) x

   一个标识符被宏定义后,该标识符便是一个宏名。这时,在程序中出现的是宏名,在该程序被编译前,先将宏名用被定义的字符串替换,这称为宏替换,替换后才进行编译。

例子1:求最大值

#include<iostream>  #define	MAX(a,b)((a)>(b)?(a):(b))  using namespace std;    int main(){  	int a=3,b=5;  	cout<<MAX(a,b);  	return 0;   }

注意写法:不要丢掉括号。

除了写成一行,还可以写成多行。

比如,下面这个程序,可以用来判断是否是十六进制。

#include<iostream>  #define	HEXCHK( ch )\  (((ch) >='0'&&(ch)<='9') || \  ((ch) >='A' && (ch) <='F') || \  ((ch) >='a' && (ch) <='f'))  using namespace std;  int main(){  	char a='2';  	char b='@';  	cout<<HEXCHK(a)<<endl; //输出 1   	cout<<HEXCHK(b)<<endl; //输出 0   	return 0;   }



(adsbygoogle = window.adsbygoogle || []).push({});

作者:亿万年的星光 分类:C++知识 浏览: