#define A B
把A定义为B的别名,A不能以数字开头,并且里面不能带特殊符号,和给变量取名类似
例:#define 整型 int
整型 a{100};
用define定义一个常量
#define version 2.1.2
优点:便于维护,只要改动define就行
知识扩展*:C语言中常用#define申请一个常量,但是C++中常用const申请一个常量
用法:const int a{100};
因为const申请常量的有类型的,编译器可以看到,当对常量进行操作时,比如a=20.00,这里赋值了一个浮点型,编译器会对这个常量进行类型检测,更安全,而#define都是无脑替换
#define H
将H 删除
例:#define H
int H a{100}相当于int a{100}
一般用来注释,提高可阅读性
#define _in_
#define _out_
int add(_in_ int a,_out_ int & b)
{b=b-a;return b;
}
这里一眼就能看出a主要是输入,b是输出
#undef H
取消宏的定义,删除H的定义,下面只要再出现H,编译器就不知道H的定义
特别注意*:只要代码区出现了#undef ,下面的 所有代码都会取消宏的定义
定义复杂表达式的宏
#define SUM(X,Y) X+Y
SUM(100,200)就相当于100+200
特别注意*:
#define Bigger(X,Y) (X>Y:X?Y)
std::cout<
这里如果不给x>y:x?y加括号运行是会出错的,因为第二行代码把Bigger替换后,就成了std::cout<
通过#将一个标识符变成字符串类型
例
#define SHOW(X) std::cout<<#x
SHOW(233ADFB);
这里的X就是一个字符串类型的值
通过##把两个标识符连接起来
例
#define SHOW(X,Y) void X##Y { std::cout<
这里就相当于void test01(std::cout<<"01")