c++的宏举例和理解

本文介绍了宏在编程中的作用,如何通过宏减少代码重复,以及预处理器符号#和##的用法,包括字符串化和连接变量名。
摘要由CSDN通过智能技术生成

宏提供了一种机制,能够使你在编译期替换代码中的符号或者语句。当你的代码中存在大量相似的、重复的代码时,使用宏可以极大的减少代码量,便于书写。 

// 定义圆周率
#define PI 3.14159265
// 定义一个空指针
#define NULL ((void*)0)
// 定义一个宏的名字为 SYSTEM_API,但是没有值
#define SYSTEM_API
double perimeter = diameter * 3.14159265;
class SYSTEM_API CSystem;

//等价
double perimeter = diameter * PI;
class CSystem;
//编译的替代性

 

#define MUL(x, y) ((x) * (y))
int ret = MUL(2 + 3, 4);
int ret = ((2 + 3) * (4));
多加几个括号防止运算失误
如:
#define MUL(x, y) x * y
int ret = MUL(2, 3);   ==> int ret = 2 * 3;

符号###

//#转化为字符串
#define STRING(x) #x
const char * str = STRING(test);
// str的内容就是"test"


##符号会连接两边的值,像一个粘合剂一样,将前后两部分粘合起来,从而产生一个新的值,例如
#define VAR(index) INT_##index
int VAR(1);
// 宏被展开后将成为 int INT_1;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值