免费注册 查看新帖 |

Chinaunix

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

为什么结构体中的成员变量可以用“点号”开头? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-07-16 15:11 |只看该作者 |倒序浏览
static inline int ip_route_connect(struct rtable **rp, u32 dst,
                                   u32 src, u32 tos, int oif, u8 protocol,
                                   u16 sport, u16 dport, struct sock *sk)
{
        struct flowi fl = { .oif = oif,
                            .nl_u = { .ip4_u = { .daddr = dst,
                                                 .saddr = src,
                                                 .tos   = tos } },
                            .proto = protocol,
                            .uli_u = { .ports =
                                       { .sport = sport,
                                         .dport = dport } } };

        int err;
        if (!dst || !src) {
                err = __ip_route_output_key(rp, &fl);
                if (err)
                        return err;
                fl.fl4_dst = (*rp)->rt_dst;
                fl.fl4_src = (*rp)->rt_src;
                ip_rt_put(*rp);
                *rp = NULL;
        }
        return ip_route_output_flow(rp, &fl, sk, 0);
}


这是tcp协议中的一个函数代码。
结构体中的成员变量为什么可以用点号开头呢?
如:
.proto = protocol,

论坛徽章:
0
2 [报告]
发表于 2011-07-16 15:16 |只看该作者
声明一个结构的变量时,在结构体内,给这个变量的成员赋值。

忘了是gcc的扩展,还是c99的标准了

论坛徽章:
0
3 [报告]
发表于 2011-07-16 15:30 |只看该作者
回复 2# myguyan


    刚查了下C99的标准
谢谢了啊



初始化结构的时候现在可以这样写:
     struct {int a[3], b;} hehe[] =  { [0].a = {1}, [1].a = 2 };
     struct {int a, b, c, d;} hehe =  { .a = 1, .c = 3, 4, .b = 5}  // 3,4 是对 .c,.d 赋值的
字符串里面,\u 支持 unicode 的字符

论坛徽章:
0
4 [报告]
发表于 2012-10-31 09:30 |只看该作者
哦……我明白 了

论坛徽章:
0
5 [报告]
发表于 2013-11-04 20:46 |只看该作者
还有我的影子。:)

论坛徽章:
0
6 [报告]
发表于 2013-11-04 21:01 |只看该作者
回复 3# abc78400123

确定是C99标准吗?我怎么记得是GNU扩展呢?


   

论坛徽章:
0
7 [报告]
发表于 2013-11-09 11:37 |只看该作者
这个是GUN标准,并不是c标准 ,加点表示结构体中可以不按成员顺序初始化。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP