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