| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1014 人关注过本帖
标题:宏定义 #的特殊含义的一点问题
只看楼主 加入收藏
妍清舞
Rank: 1
等 级:新手上路
帖 子:121
专家分:0
注 册:2007-11-12
收藏
 问题点数:0 回复次数:2 
宏定义 #的特殊含义的一点问题
程序:
[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] 是代表什么?
搜索更多相关主题的帖子: 定义 含义 代表 参数 
2007-12-05 13:16
zbqf109
Rank: 1
等 级:新手上路
帖 子:289
专家分:0
注 册:2006-12-31
收藏
得分:0 
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"

坚决不跟用TC的人打交道!
2007-12-05 14:19
妍清舞
Rank: 1
等 级:新手上路
帖 子:121
专家分:0
注 册:2007-11-12
收藏
得分:0 
有点明白,谢谢
2007-12-08 20:53
快速回复:宏定义 #的特殊含义的一点问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015154 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved