学C C++想提升功底 可以花点时间看看这篇博客---C语言程序环境和预处理

本文详细介绍了C语言中的#define预处理指令,包括宏定义、标识符的使用、参数替换规则、字符串连接特性以及#和##的区别,强调了带副作用的宏参数、宏与函数的比较以及条件编译的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2.#define的用法

#define是C语言中的一个预处理指令,主要用于在编译前阶段对数据进行一些相应操作

①. #define 定义标识符

语法:
#define name(标识符名字) stuff(标识符要表示的具体内容)

举个例子:
在这里插入图片描述

上图示例 将 定义了标识符NUM 表达的内容为数字常量6
此时NUM就相当与一个数字常量6赋值给了变量num,最后通过printf函数输出…

========================================================
#define定义的标识符不仅仅只能表达一个数字常量 甚至还可以这样写↓
在这里插入图片描述
此时NUM表达 的含义是 6); 意味着在printf 函数输出NUM时后面的)和;都可以不用写!!!

注意:既然#define 定义的标识符可以表达任意替换的内容,
为了执行int num =NUM;这种操作时更方便
可不可以在NUM定义的时候表示为数字;呢?

比如:
#define MAX 1000;
#define MAX 1000

虽然这样做可以,但是只是方便了一下,但会留下很大的隐患.
在常量数字后面加分号是不建议的!因为在实际场景中可能不仅仅需要赋值,也有可能直接输出MAX 此时后面多了一个;反而无法去除,所以不要省着一下方便把分号也加上去…毕竟每条语句都手动加上分号代码更规范美观

②.#define定义宏

#define 机制包括了一个规定,允许把参数替换到文本中,这种实现通常称为宏(macro)或定义宏(define macro)也可以看做宏函数。

下面是使用格式:

#define name( parament-list ) stuff
其中的 parament-list 是一个由逗号隔开的符号表,它们可能出现在stuff中。
注意:
参数列表的左括号必须与name紧邻。
如果两者之间有任何空白存在,参数列表就会被解释为stuff的一部分。

下面看使用示例:
在这里插入图片描述
上面代码通过#define宏定义了 ADD(a,b) a+b
表达的含义是当在下面代码里使用ADD(参数1,参数2) 时 会将两个参数替换掉a和b
此时ADD(a,b)表示的就是 参数1+参数2 的意思 而代码中参数为常量数字1和2最后结果为1+2输出为6

========================================================
现在看看下面代码输出结果是什么↓

#define \_CRT\_SECURE\_NO\_WARNINGS
#include<stdio.h>
//#define NUM 6
#define MUL(a,b) a\*b

in
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值