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



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

在阅读zebra的路由器协议中发现有这么一段宏定义不知道是什么意思。
0RjM;c:|hwww.linuxeden.com#define UNSET_IF_PARAM(S, P) ((S)->P##__config) = 0
$B`F#T+h#define DECLARE_IF_PARAM(T, P) T P; u_char P##__config:1www.linuxeden.comQ@(L        Ga f:y
Linux伊甸园论坛4sdWh
D&gr!zbo

第一句中的##__config是什么意思?
'zi0Za!F        [Linux伊甸园论坛第二句中T P后面的分号和最后面的冒号,令人费解。e3xn4PD0`w
望指点。

顶部
不容错过的IBM 集群技术资源汇总
flag
版主
Rank: 7Rank: 7Rank: 7
版主



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





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



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

顶部
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 发表 www.linuxeden.com"[3gcPL`-RN
在阅读zebra的路由器协议中发现有这么一段宏定义不知道是什么意思。p
p"s^
ix)v9t

#define UNSET_IF_PARAM(S, P) ((S)->P##__config) = 0
tOiOw$Jw#define DECLARE_IF_PARAM(T, P) T P; u_char P##__config:1
^/\.jb`/jC0u
*U:~ Z"K4EEQHZ第一句中的##__con ...

~        ^kCCA        ^7lLinux伊甸园论坛这里有个例子你可以看看:

#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] 中间
顶部
 



当前时区 GMT+8, 现在时间是 2008-5-17 09:32

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

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