免费注册 查看新帖 |

Chinaunix

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

请教一下把宏 S(A,B)展开为 A B 的其他写法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-02-27 09:39 |只看该作者 |倒序浏览
我知道一种办法
#define S(A,B)  A/**/B
但是据说有的编译器不一定支持
想请教一下还有没有什么其他更可靠的办法

论坛徽章:
0
2 [报告]
发表于 2010-02-27 09:50 |只看该作者
你试试看啊

论坛徽章:
0
3 [报告]
发表于 2010-02-27 09:57 |只看该作者
回复 2# prolj
?
没理解您的意思
我问的是其他办法

论坛徽章:
0
4 [报告]
发表于 2010-02-27 12:04 |只看该作者
你说的是
#define S(A, B) A##B
还是
#define S(A, B) A B

看标题好像是第二种写法。

论坛徽章:
0
5 [报告]
发表于 2010-02-27 12:58 |只看该作者
回复 4# pagx


    是的,是后一种

论坛徽章:
0
6 [报告]
发表于 2010-02-27 13:04 |只看该作者
弱弱地说,加个分号行吗

论坛徽章:
0
7 [报告]
发表于 2010-02-27 13:07 |只看该作者
回复 6# daybreakcx

在中间?
不是的,就是要展开后中间那个空格

论坛徽章:
0
8 [报告]
发表于 2010-02-27 14:05 |只看该作者
展开后中间要空格A B就行了,还有原来的A/**/B在gcc下是通过的

论坛徽章:
0
9 [报告]
发表于 2010-02-27 16:55 |只看该作者

  1. $ cat s.c
  2. #define S(A, B) A B

  3. S(Hello, World);

  4. $ gcc -E s.c
  5. # 1 "s.c"
  6. # 1 "<built-in>"
  7. # 1 "<command line>"
  8. # 1 "s.c"


  9. Hello World;
复制代码

论坛徽章:
0
10 [报告]
发表于 2010-02-27 17:04 |只看该作者
展开后中间要空格A B就行了,还有原来的A/**/B在gcc下是通过的
daybreakcx 发表于 2010-02-27 14:05



    见笑了!
    我大脑短路了,一心想着用##拼接了

    另,谢谢楼上网友的解答及其他几位网友的热心
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP