您的位置:首页 > 编程语言 > C语言/C++

C语言中宏定义中的#和##

2011-11-17 19:45 441 查看

C语言中宏定义中#和##中作用

在宏定义中#和##的作用是:前者将宏定义的变量转化为字符串;后者将其前后的两个宏定义中的两个变量无缝拼接在一起。

1.   #: 在宏定义中,将其后的变量,转化为字符串。

    eg:  #define  str(s)      #s

  输出: helloworld , 就可以通过这样的的调用, printf( str(helloworld) );

2. ## : 在宏定义中,将其前后的两个变量拼接在一起。

     eg: #define v(a,b,c,d)       0xa##b##c##d             

     //将四个字节的十六进制的数据转化为一个十六进制的整型数据

    int    a  =  v(CF,AB,B0,BC);   // 即 a = 0xCFABB0BC

3. 两者的共性: 能够阻止宏定义的递归展开。可以通过中间的转换的宏,来实现参数宏的展开。

实例代码如下:

#include<stdio.h>

#define str(s) #s
#define v(a,b,c,d) 0x##a##b##c##d

int main(int argc,char* argv[])
{
int a;
printf(str(HelloWold!\n));
a = v(2f,bc,ff,8d);
printf("%d : %0x", a,a);

return 0;

}

运行结果:



        

                 

                   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  语言 c