#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;}复制代码

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

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

#define reg register //将register改名为regint 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*xint 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##numint main(){ int class105 = 100; printf(“%d”, TYPE(class, 105));}//打印结果就是100 【转自:盐城网站建设 yancheng.html 复制请保留原URL】你可以很有个性,但某些时候请收敛。

#define 以及##

相关文章:

你感兴趣的文章:

标签云: