#define 以及##

简介: #define 以及##

define定义标示符

define定义标示符就是将一个名称起一个别名,在程序运行之前使用别名将原来的名字替换掉,从而达到简化代码书写的作用

define的语法

define name stuff

name是别名,stuff是原本的名称

define NUM 120

define STR "abcdef"

int main()
{

printf("%d\n", NUM + 10);
printf("%s", STR);
return 0;

}
复制代码
image-20220409213341935

其实#define就是将NUM 和 STR 简单的进行了转换,再进行计算即可

define也可以将复杂的符号进行简单的替换

define reg register //将register改名为reg

int main()
{

//register int a = 0;//  定义一个寄存器变量a
reg int a = 0;
return 0;

}
复制代码
注意:#define 后面最好不要加上分号,避免不必要的错误

define定义宏

宏的声明方式
define name( parament-list ) stuff

其中的parament-list 是一个由逗号隔开的符号表,它们可能出现在stuff中。

define只是进行了简单的替换,并不会进行运算

define ADD(x) x+x

define MUL(x) x*x

int main()
{

int ret = ADD(2);
printf("%d\n", ret1);
  
int ret2 = MUL(3);
printf("%d\n", ret2);

int ret3 = MUL(2 + 3);
printf("%d\n", ret3);
return 0;

}
复制代码
ret1 的结果就是2+2=4

ret2的结果就是3*3=9

ret3的结果是11,为什么不是25?就是因为#define不会进行运算,只是简单的替换,所以是2+3*2+3=11

要是想要得到25就要加上括号,严格规定优先级顺序

define MUL(x) (x)*(x)

int main()
{

int ret3 = MUL(2 + 3);
printf("%d\n", ret3);
return 0;

}
复制代码
使用#define宏定义时,如果不注意就会发生错误,所以在宏定义的时候要多加括号,严格规定优先级的顺序

和 ##的作用

是将字符拼接在字符串中

define PRINT(n,format) printf("the value of "#n" is "#format"",n)

int main()
{

int a = 10;
PRINT(a, "%d");

return 0;

}

复制代码

是将两边的符号连接起来,成为一个符号

define TYPE(class,num) class##num

int main()
{

int class105 = 100;
printf("%d", TYPE(class, 105));

}
//打印结果就是100

目录
相关文章
|
8月前
|
小程序
小程序 define is not defined
小程序 define is not defined
62 0
|
11月前
#define的用法
在程序中扩展#define定义符号和宏时,需要涉及几个步骤。 1. 在调用宏时,首先对参数进行检查,看看是否包含任何由#define定义的符号。如果是,它们首先 被替换。 2. 替换文本随后被插入到程序中原来文本的位置。对于宏,参数名被他们的值所替换。 3. 最后,再次对结果文件进行扫描,看看它是否包含任何由#define定义的符号。如果是,就重复上述处理过程。
88 0
|
10月前
|
编译器 C++
typedef vs #define
typedef vs #define。
23 0
用#define宏实现Add函数
用#define宏实现Add函数
87 0
|
编译器
宏定义(#define)及相关知识
宏定义(#define)及相关知识
101 0
|
C语言
宏定义#define的使用
宏定义#define的使用
95 0
|
机器学习/深度学习
C中define的#和##
C中define的#和##
58 0
|
存储 数据库 开发者
extern,const,#define
extern,const,#define
66 0
|
C语言
define需要注意的点
define需要注意的点
157 0
define需要注意的点
|
C++
c/c++ define用法
define,无参宏定义的一般形式为:#define 标识符 字符串 外文名 define 词条范围 计算机专业用语 无参一般形式 #define 标识符 字符串 带参一般形式 #define 宏...
2311 0