c 宏转字符串与拼接 C 用宏可以转字符串与拼接字符。 举例 #include <stdio.h> #define CON(a) (B##a) //concatenate #define STR(a) #a enum{B0,B1}; int pt(int b) { printf("B%d\n",b); } int main() { printf("B" STR(0) " %d B1 %d\n",CON(0),CON(1)); pt(CON(0))...
首先,我们知道非常常见的一个宏的拼接和展示字符串的宏定义: #defineCONTACT(x,y) x##y//拼接#defineSTR(x) #x//转字符串 这种宏定义在开发中是很常见的! 但是,如果上边我们那个需求中,让一个字符串和一个宏的值进行拼接的话,纯粹使用上边的宏就不行了,这里我们要使用二级的宏,这样才能拼接到宏的值: ...
intA_param=0;//添加宏定义#defineNUM A#defineDEFINE_(X) X##_param//首次定义#defineDEFINE(X) DEFINE_(X)//再次定义voidfun(){// DEFINE_(NUM)=100; //这个操作会报错,它就是直接拼接不被替换。即被替换为NUM_param=100;DEFINE(NUM)=100;//这个操作就🐮🍺了,先替换再拼接。即被替换为A_para...
charA_param=0;charB_pramm=0;//添加宏定义#defineOBJECT A#defineDEFINE_(X) X##_param//一次定义#defineDEFINE(X) DEFINE_(X)//再次定义#definePARAM DEFINE(OBJECT)voidfun(){// DEFINE_(OBJECT)=100; 这个操作是拒绝的,它就是直接拼接不被替换DEFINE(OBJECT)=100;//这个操作就神了,先替换再拼接,...
宏定义中的字符串拼接 在宏定义中可以使用 ## 运算符对两个字符串进行拼接。例如:在上述代码中,我们定义了一个宏定义 CONCAT(a, b),它的作用是将 a 和 b 两个字符串拼接在一起。在 main 函数中,我们使用 CONCAT(x, y) 宏定义将两个字符串 x 和 y 拼接成了 xy,并输出它的值。宏定义中的条件...
C语言#define拼接宏定义实现方式 使用场合:拼接两个宏,一个是传入的宏。但是传入的宏不会被替换,反而原封不动的接了上去,这就尴尬了。经过各种尝试,居然成了,特此记录分享一下,方便大家学习。 char A_param=0; char B_pramm=0; //添加宏定义 #define OBJECT A...
首先宏函数展开有两种情况: 参数参与了 ## 或者 # 符号的操作 此时,由于PRIMITIVE_CAT宏函数中的参数X Y参与了## 拼接,那么就不会对宏X Y进行展开后传入,而是直接传入。 #define X 0#define Y 1#define XY 2#define PRIMITIVE_CAT(a,b) a##bprintf("%d\n",PRIMITIVE_CAT(X,Y)); ...
在C语言中,字符串宏通常定义为字符数组 代码语言:javascript 复制 #include<stdio.h>#defineSTRING_A"Hello"#defineSTRING_B"World"intmain(){printf("%s %s\n",STRING_A,STRING_B);return0;} 上面的代码会分别打印 "Hello" 和 "World"。 如果你想要拼接两个字符串宏,可以定义一个新的字符串宏,如下...
宏定义中的#和##的作用,#用于将宏转化成字符串,##用于拼接两个宏,举4个例说明如下 #define STR(x) #x#define STR2(x) STR(x)#define CONNECT(a, b) a##_##b#define CONNECT2(a, b) CONNECT(a, b)#define AA 11#define BB 22/* #的作用是将宏转字符串,##是拼接2个宏。* 个人觉得#和...