C语言的博大精深之数组和结构体的赋值操作

分类: c/c_plus |
第一话,先谈谈数组赋值吧。恩,在C语言中数组赋值和结构体赋值很简单,就是使用=,memcpy操作嘛.
但最近在看关于队列调度的内核实现代码时,发现如下奇怪的赋值语句。(具体程序见linux-2.6.8:net/core/Rtnetlink.c的539行)
-
#define
RTM_MAX (RTM_BASE+47)
-
#define
RTM_GETLINK (RTM_BASE+2)
-
-
struct
rtnetlink_link
-
{
-
int (*doit)(struct sk_buff *, struct nlmsghdr*, void *attr);
-
int (*dumpit)(struct sk_buff *, struct netlink_callback *cb);
-
};
-
-
static
struct rtnetlink_link link_rtnetlink_table[RTM_MAX-RTM_BASE+1] =
-
//RTM_MAX-RTM_BASE+1=48
-
-
{
-
[RTM_GETLINK - RTM_BASE] = { .dumpit = rtnetlink_dump_ifinfo },
-
[RTM_SETLINK - RTM_BASE] = { .doit = do_setlink },
-
[RTM_GETADDR - RTM_BASE] = { .dumpit = rtnetlink_dump_all },
-
[RTM_GETROUTE - RTM_BASE] = { .dumpit = rtnetlink_dump_all },
-
[RTM_NEWNEIGH - RTM_BASE] = { .doit = neigh_add },
-
[RTM_DELNEIGH - RTM_BASE] = { .doit = neigh_delete },
-
[RTM_GETNEIGH - RTM_BASE] = { .dumpit = neigh_dump_info }
- };
关注微信号,扫描二维码,获取更多开发技能!
http://s1/large/0042s33Gzy7wY4MxSj3ed