免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3362 | 回复: 7
打印 上一主题 下一主题

##連接符可以在字符串中起作用嗎? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-01-15 11:32 |只看该作者 |倒序浏览
比如我定義了下面的程序:
  1. #define PRINT( _i_ ) printf( "val##_i_=%d\n", val##_i_ );

  2. int main(int argc, char *argv[])
  3. {
  4.     int val1 = 23;
  5.     int val2 = 22;
  6.    
  7.     PRINT( 1 )
  8.     PRINT( 2 )
  9.    
  10.     return 0;
  11. }
复制代码
運行結果是這様的:
val##_i_=23
val##_i_=22

并不是我想要得到的:
val1=23
val2=22

想要問的是,可以讓##連接符在用“”括起的字符串中也同様進行替換麽?謝謝!

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
2 [报告]
发表于 2012-01-15 12:06 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
14
巨蟹座
日期:2013-11-19 14:09:4615-16赛季CBA联赛之青岛
日期:2016-07-05 12:36:0515-16赛季CBA联赛之广东
日期:2016-06-29 11:45:542015亚冠之全北现代
日期:2015-07-22 08:09:472015年辞旧岁徽章
日期:2015-03-03 16:54:15巨蟹座
日期:2014-12-29 08:22:29射手座
日期:2014-12-05 08:20:39狮子座
日期:2014-11-05 12:33:52寅虎
日期:2014-08-13 09:01:31巳蛇
日期:2014-06-16 16:29:52技术图书徽章
日期:2014-04-15 08:44:01天蝎座
日期:2014-03-11 13:06:45
3 [报告]
发表于 2012-01-15 22:48 |只看该作者
为什么不用简单的
#define PRINT( _i_ ) printf( "val%d=%d\n", _i_, val##_i_ );

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
4 [报告]
发表于 2012-01-15 22:54 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
5 [报告]
发表于 2012-01-15 23:00 |只看该作者
楼主想下,怎样使
PRINT( 1 + 1 )

输出 val2=22

这个也很好玩

论坛徽章:
0
6 [报告]
发表于 2012-01-16 09:39 |只看该作者
回复 2# pmerofc


    謝謝回覆!
    之前沒遇到過這麽寫的,又學到知識了。

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
7 [报告]
发表于 2012-01-16 09:41 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
8 [报告]
发表于 2012-01-16 09:43 |只看该作者
回复 5# AD8018


    可以這様嗎? 望多指教啦!
    之前記得《C和指針》裏面有關於這類用法的描述,但現在想不起來了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP