标题: 奇怪的宏定义
twuking
新生入学
Rank: 1
注册用户



UID 166327
精华 0
积分 0(积分有什么用?)
帖子 4
阅读权限 10
注册 2006-9-5
状态 离线
发表于 2007-6-13 10:21  资料  个人空间  短消息  加为好友 
奇怪的宏定义

在阅读zebra的路由器协议中发现有这么一段宏定义不知道是什么意思。
XF-zC8Yt?        C#define UNSET_IF_PARAM(S, P) ((S)->P##__config) = 0({E2RL u/N'THM
#define DECLARE_IF_PARAM(T, P) T P; u_char P##__config:1
4TJA^#R
S-{4x
www.linuxeden.comndFR;Zo"v-S
第一句中的##__config是什么意思?
#x)z.u(i-YkLinux伊甸园论坛第二句中T P后面的分号和最后面的冒号,令人费解。_x4\[&R Y`/o
望指点。

顶部
flag
版主
Rank: 7Rank: 7Rank: 7
版主



UID 19801
精华 1
积分 28(积分有什么用?)
帖子 5581
阅读权限 100
注册 2002-7-19
状态 离线
发表于 2007-6-14 09:41  资料  个人空间  短消息  加为好友 
##这种用法书上一般都有说。
BmyTD0M5A p)F \1Lgbwww.linuxeden.com宏的效果要放到使用的地方才知道,单独拿出来当然会不容易理解。





上帝说,有问题,找GOOGLE 写程序是很神圣的事情!同样只是装系统,卖菜的大娘会的事情不见得就跟卖菜一样了。
顶部
不容错过的IBM 集群技术资源汇总
Clerk_9919
小试牛刀
Rank: 2
注册用户



UID 599
精华 0
积分 1(积分有什么用?)
帖子 138
阅读权限 10
注册 2001-2-26
状态 离线
发表于 2007-7-9 11:42  资料  个人空间  短消息  加为好友 
:1 是说变量只占1bit

顶部
不容错过的IBM 集群技术资源汇总
dearvoid
版主
Rank: 7Rank: 7Rank: 7
Clark J. Wang



UID 26605
精华 26
积分 61(积分有什么用?)
帖子 4814
阅读权限 100
注册 2002-10-12
来自 Beijing, China
状态 离线
发表于 2007-7-11 12:25  资料  个人空间  短消息  加为好友 


QUOTE:
原帖由 twuking 于 2007-6-13 10:21 发表 3u(m7}}Y{C0yc]
在阅读zebra的路由器协议中发现有这么一段宏定义不知道是什么意思。Q5t oQb\*i U
#define UNSET_IF_PARAM(S, P) ((S)->P##__config) = 0)^'Fi!nqp
#define DECLARE_IF_PARAM(T, P) T P; u_char P##__config:1www.linuxeden.comc%~ ~l w/Cq


N(bv6q8jLinux伊甸园论坛
第一句中的##__con ...

)c9W9j;|+U5B这里有个例子你可以看看:

#include <stdio.h>

#define MAKE_HELLO_FUNC(x) \
    void x##_hello(void) \
    { \
        printf("Hello, " #x "\n"); \
    }

MAKE_HELLO_FUNC(foo)
MAKE_HELLO_FUNC(bar)

int
main(int argc, char * argv[])
{
    foo_hello();
    bar_hello();

    return 0;
}

[ 本帖最后由 dearvoid 于 2007-7-11 12:33 编辑 ]





'
◆ 发帖时请【突出主题】, 以便您的问题能够及时得到回复
◆ 发帖时请将您的【代码】或者【脚本】写在 [code] 和 [/code] 中间
顶部
不容错过的IBM 集群技术资源汇总
 



当前时区 GMT+8, 现在时间是 2008-5-16 15:55

    Powered by Discuz! 5.5.0  © 2001-2007 Comsenz Inc.
Processed in 0.086381 second(s), 5 queries

清除 Cookies - 联系我们 - Linux伊甸园 - Archiver - WAP