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

C++中的宏

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

一、预处理和编译器

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

例如:

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


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

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

    分享给朋友:

    相关文章

    C++中的逻辑与运算

    样例#include<iostream> using namespace std; int main(){ cout<<(1&1)...

    如何估算时间复杂度

    首先:  常见的算法时间复杂度由小到大依次为:Ο(1)<Ο(log2n)<Ο(n)<Ο(nlog2n)<Ο(n^2)<Ο(n^3)<…<Ο(2^n)<Ο(n!)时间复杂度可以简单理解为最多执...

    CSP复赛必备,时间与空间估算

    CSP复赛必备,时间与空间估算

    一、时间估算       在竞赛环境中,一般运行程序的时间是1s。这要求我们尽量不要循环太多次数,一般情况下,建议将时间复杂度控制在10^8以内。 ...

    C++中的输入与输出

    注:初学者只需要掌握cin、cout即可(2.2、3.2小节)1.C++输入输出概述C++的输入输出分为两大体系:1.  C++标准输入输出流(IOStream):以cin(输入流)、cou...

    【题解】盈亏问题

    【题目描述】一群人团购一件物品:如果每人出 a元,所付总金额比物价多出了x 元;如果每人少出 1元,也就是每人出a-1元,所付总金额比物价少了y元。给定 a,x,y求参与团购的人数及该物品的...

    C++中的位宽与保留小数

    C++中的位宽与保留小数

    一、setw函数C++ setw() 函数用于设置字段的宽度,语法格式如下setw(n)比如:#include <bits/stdc++.h> using names...