日期:2014-05-16  浏览次数:20663 次

冒号的问题
C/C++ code

struct pmem_bits {
    unsigned allocated:1;        /* 1 if allocated, 0 if free */
    unsigned order:7;        /* size of the region in pmem space */
};



正在学习Android源码
看到这样的冒号的用法,请问是赋值吗?还是位结构?


还有像这样的linux内核代码里的:
C/C++ code

struct proto_ops unix_dgram_ops = {
         family:         PF_UNIX,
         release:        unix_release,
         bind:           unix_bind,
         connect:        unix_dgram_connect,
         socketpair:     unix_socketpair,
         accept:         sock_no_accept,
         getname:        unix_getname,
         poll:           datagram_poll,
         ioctl:          unix_ioctl,
         listen:         sock_no_listen,
         shutdown:       unix_shutdown,
         setsockopt:     sock_no_setsockopt,
         getsockopt:     sock_no_getsockopt,
         sendmsg:        unix_dgram_sendmsg,
         recvmsg:        unix_dgram_recvmsg,
         mmap:           sock_no_mmap,
         sendpage:       sock_no_sendpage,
};



这里的冒号是赋值吗?
为什么最后还有一个逗号 sendpage: sock_no_sendpage,


------解决方案--------------------
第一个是位域,第二个是结构体变量始化。
------解决方案--------------------
Assembly code
struct pmem_bits {
    unsigned allocated:1;        /* 1 if allocated, 0 if free */
    unsigned order:7;        /* size of the region in pmem space */
};

------解决方案--------------------
一个是类型声明,一个定义变量,别搞混了。
------解决方案--------------------
探讨
引用:
第一个是位域,第二个是结构体变量始化。

第二个与
.family = PF_UNIX,
是一样的作用吗?