当前位置: 代码迷 >> C语言 >> 宏定义 #的特殊含义的一点问题
  详细解决方案

宏定义 #的特殊含义的一点问题

热度:220   发布时间:2007-12-05 13:16:28.0
宏定义 #的特殊含义的一点问题
程序:
[bold]#define PRINT(int)  printf(#int  " = %d\n",int)[/bold]
[bold]main()[/bold]
[bold]{[/bold]
[bold]    int x=1,y=1,z=1;[/bold]
[bold]    x+=y+=z;[/bold]
[bold]    PRINT(x<y?  y : x);[/bold]
[bold]}[/bold]
请问:1. [bold]printf(#int "=%d\n",int)[/bold]中的 [bold]#int[/bold] 代表什么,在这里 # 有何特殊含义
           2. 带参数的宏定义中[bold]#define 宏名 ()[/bold]字符串,[bold]()[/bold]中不是参数吗?此处[bold] int[/bold] 是代表什么?
搜索更多相关的解决方案: 定义  含义  代表  参数  

----------------解决方案--------------------------------------------------------
1、#int 此处将展开为 "int"
2、( )中不是参数,而是被替换的字符(串)

例如,你的例子中的
PRINT( x < y ?  y  : x );
将展开为
printf("x < y ? y : x = %d\n", x < y ? y : x);

类似的宏还有:
#define  A(x)    T_##x
#define  B(x)    #@x
#define  C(x)    #x
  假设:x=1,则有:
A(1)------〉T_1
  B(1)------〉'1'
  C(1)------〉"1"
----------------解决方案--------------------------------------------------------
有点明白,谢谢
----------------解决方案--------------------------------------------------------
  相关解决方案