| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 422 人关注过本帖, 1 人收藏
标题:关于宏##问题
只看楼主 加入收藏
heimodao
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:88
专家分:172
注 册:2011-4-8
结帖率:100%
收藏(1)
已结贴  问题点数:10 回复次数:4 
关于宏##问题
我想编写一个返回值和参数都是unsigned long的宏:D(unsigned,long)
这样子:
******************
#define D(x,y) (x y x_y##_A(x y a,x y b))    /a和b是虚拟参数,不用理

**********************
这样宏的展开是不是这样:
******************
unsigned long unsigned_long_A(unsigned long a,unsigned long b)
{
?????
}
*********************
编译能如愿吗?谢谢…………
搜索更多相关主题的帖子: long 
2011-06-02 21:26
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:3 
我去试试

                                         
===========深入<----------------->浅出============
2011-06-02 21:44
heimodao
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:88
专家分:172
注 册:2011-4-8
收藏
得分:0 
回复 2楼 laoyang103
谢谢啊,我想用gdb 或GCC-E 来处理,可是不会
2011-06-02 21:46
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:7 
程序代码:
#include <stdio.h>

//#define export_str(str)    #str

#define Def_Func(prefix, type, name, _a, _b)    \
    prefix type prefix##_##type##_##name        \
    (prefix type _a, prefix type _b)    

Def_Func(unsigned, long, A, a, b)
{
    return a+b;   
}

int main(int argc, char *argv[])
{
    printf("result = %d",unsigned_long_A(1,1));
    return 0;
}

技术问题,请不要以短消息方式提问
2011-06-02 22:44
heimodao
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:88
专家分:172
注 册:2011-4-8
收藏
得分:0 
#define D(x,y) x y x_y##_A(x y a,x y b)   /原题要去掉一对括号才行
结果是:
*****************
unsigned long x_y_A(unsigned long a,unsigned long b);
**********************
貌是##之前的参数只能引用一次,
x y x_y##_A的结果是:unsigned long x_y_A
而非:
                     unsigned long unsigned_long_A
其实原因是这样的:
宏替换不会片断的替换源代码宏定义,如果这样写:x y x y##_A
                                    输入是  : unsigned long unsigned long_A
OK

[ 本帖最后由 heimodao 于 2011-6-24 21:36 编辑 ]
2011-06-24 21:29
快速回复:关于宏##问题
数据加载中...
 
   



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

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