关于预处理和宏定义的知识

预处理是在程序源代码被编译之前,由预处理器(Preprocessor)对程序源代码进行的处理。这个过程并不对程序的源代码进行解析,但它把源代码分割或处理成为特定的符号用来支持宏调用。

C提供的预处理主要有三种——宏定义、文件包含和条件编译

宏定义的核心就是替换

1. 用无参宏定义一个简单常量

eg. #define LEN 12

几个重要的知识点

1)#define NAME “XXX”

Q:如果程序中有“NAME”会不会被替换?

A:不能替换程序中字符串里的东西

2)#define int 1234

Q:能否将标识符的字符替换为别的东西

A:宏定义前面那个必须是合法的用户标识符

3)#define NAME “XXX

Q:这样可以吗?

A:不能把字符串的两个”“拆开


2. 带参宏的一般用法

#define MAX(a , b) ((a) > (b) ? (a) : (b))

则遇到MAX(1+2, 2+3)则会替换成:

((1+2) > (2+3) ? (1+2) : (2+3))

所以注意加括号


3. 多行宏定义:

#define doit(m,n) for(int i=0;i<(n);++i)\

{\
 m+=i;\

}


还有

#define F(a) "a"

Q:F(555)会被替换成什么?

A:是无论a取何值,都会被替换成”a“

Q:若想替换成”555“怎么办呢?

A:#define F(a) #a

# 为后面的宏形参添加双引号

#@ 为后面的宏形参添加单引号

## 连接##前后的两个宏形参


例子:


结果:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值