当前位置:首页 > C++目录 > 正文内容

C++中的宏

亿万年的星光4年前 (2022-01-24)C++目录2128

一、预处理和编译器

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

例如:

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; 
}


    扫描二维码推送至手机访问。

    版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

    分享给朋友:

    相关文章

    【题解】最短路径问题

    【题目描述】平面上有n个点(n≤100),每个点的坐标均在-10000~10000之间。其中的一些点之间有连线。若有连线,则表示可从一个点到达另一个点,即两点间有通路,通路的距离为两点间的直线距离。现...

    信息学奥赛中文件流的写法

    信息学奥赛中文件流的写法

    头文件#include<cstdio>也可以用万能头格式如下:int main(){ freopen("xxxx.in","r",st...

    【题解】玩具

    【题目描述】商店正在出售蒜头君最喜欢的系列玩具,在接下来的 " 周中,每周会出售其中的一款,同一款玩具不会重复出现。由于是蒜头君最喜欢的系列,他希望尽可能多地购买这些玩具,但是同一款玩具蒜头...

    编写第一个C++程序

    编写第一个C++程序

    前面的文章介绍了Dev-C++的下载安装:【入门篇】>>> DEVC++下载、安装、简单使用 - 青少年编程知识记录 (codecoming.com)今天讲一下如何使用Dev-C++...

    【题解】围圈报数(约瑟夫问题)

    【题解】围圈报数(约瑟夫问题)

    【题目描述】有n个人依次围成一圈,从第1个人开始报数,数到第m个人出列,然后从出列的下一个人开始报数,数到第m个热呢又出列,... ,如此反复到所有的人全部出列为止。设n个人的编号分别为1,2,......

    完全背包问题

    1. 问题定义完全背包问题是经典的动态规划问题之一。它的基本描述如下:有一个容量为 V 的背包。有 N 种物品,每种物品有无限个可用。第 i ...