c语言宏定义函数拼接 c语言宏定义可以嵌套吗

c语言有没有办法在宏后面拼接一个字符串?宏c语言宏定义函数拼接的原理就是预编译阶段进行文本替换c语言宏定义函数拼接 , 
这个直接写就可以c语言宏定义函数拼接的
#define NEWDEV_CHANNEL"/2"
这个宏就是 /dev/xxxx/2
C语言,将数字和字符串拼成一个字符串 。用宏来做 , 用api谁都会!宏定义字符串拼接可以使用宏运算##c语言宏定义函数拼接,即 #define strcat(x,y) x##y 。
##运算符可以将两个记号(例如标识符)“粘”在一起 , 成为一个记号 。如果其中一个操作数是宏参数,“粘合”会在当形式参数被相应c语言宏定义函数拼接的实际参数替换后发生 。考虑下面的宏c语言宏定义函数拼接:
#define MK_ID(n) i##n
下面的声明使用MK_ID创建了3个标识符:
int MK_ID(1), MK_ID(2), MK_ID(3);
预处理后声明变为:
int i1, i2, i3;
例如:
#include stdio.h
#define strcat(x,y) x##y
int main()
{
int strcat(i,1),strcat(i,2);
i1=10,i2=20;
printf("%d %d",i1,i2);
return 0;
}
/*运行结果:
10 20
*/
C语言 连接符号 # ## 宏定义您好,我来试着解答一下你的疑惑 。
先上两张图:

这个说的很明白,#粘合后成为“字符串”,而##粘结后成为“记号” 。
所以,"token" #n之后 , 比如"token" #8,会显示为字符串"token8" ,这时调用"token8"[0] , 就相当于你取字符串 "token8"中第一个字符,跟使用数组类似了(这一点存疑的话可以自己试验 , 比如"abcde[2]"代表c,跟用字符数组是一样的) 。
但是"token" ##n之后,比如"token" ##8,会显示为记号token8,这时的token8相当于变量名而不是一个字符串字面量,所以token8[0]当然就是指这个数组里第一个元素了 。
若有疑问请提出...
您的采纳是我们的动力~~
c语言关于宏定义、函数宏定义c语言宏定义函数拼接的基础知识 。引用宏定义时c语言宏定义函数拼接,直接代入进行代换 。
既然已经宏定义SUB(a) (a)-(a),而程序中出现的对应a的是a+b,那么就将a换为a+b代入表达式c语言宏定义函数拼接:
d=SUB(a+b)*c=(a+b)-(a+b)*c=(2+3)-(2+3)*5
直接用(a+b)-(a+b)代换SUB(a+b) 。这一点和数学是不同的 , 不要强行往数学上靠 。
【c语言宏定义函数拼接 c语言宏定义可以嵌套吗】c语言宏定义函数拼接的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言宏定义可以嵌套吗、c语言宏定义函数拼接的信息别忘了在本站进行查找喔 。

    推荐阅读