免费注册 查看新帖 |

Chinaunix

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

有关结构,看不懂 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-02-28 08:50 |只看该作者 |倒序浏览

  1. struct proto_ops unix_stream_ops = {
  2.         family:         PF_UNIX,

  3.         release:        unix_release,
  4.         bind:           unix_bind,
  5.         connect:        unix_stream_connect,
  6.         socketpair:     unix_socketpair,
  7.         accept:         unix_accept,
  8.         getname:        unix_getname,
  9.         poll:           unix_poll,
  10.         ioctl:          unix_ioctl,
  11.         listen:         unix_listen,
  12.         shutdown:       unix_shutdown,
  13.         setsockopt:     sock_no_setsockopt,
  14.         getsockopt:     sock_no_getsockopt,
  15.         sendmsg:        unix_stream_sendmsg,
  16.         recvmsg:        unix_stream_recvmsg,
  17.         mmap:           sock_no_mmap,
  18.         sendpage:       sock_no_sendpage,
  19. };

  20. struct proto_ops unix_dgram_ops = {
  21.         family:         PF_UNIX,

  22.         release:        unix_release,
  23.         bind:           unix_bind,
  24.         connect:        unix_dgram_connect,
  25.         socketpair:     unix_socketpair,
  26.         accept:         sock_no_accept,
  27.         getname:        unix_getname,
  28.         poll:           datagram_poll,
  29.         ioctl:          unix_ioctl,
  30.         listen:         sock_no_listen,
  31.         shutdown:       unix_shutdown,
  32.         setsockopt:     sock_no_setsockopt,
  33.         getsockopt:     sock_no_getsockopt,
  34.         sendmsg:        unix_dgram_sendmsg,
  35.         recvmsg:        unix_dgram_recvmsg,
  36.         mmap:           sock_no_mmap,
  37.         sendpage:       sock_no_sendpage,
  38. };
复制代码

出自linux内核代码,有关socket的内容/usr/src/linux-2.4/net/unix/af_unix.c
不知道这里的“:”是什么意思,以及为什么后面用“,”.

论坛徽章:
0
2 [报告]
发表于 2003-02-28 09:19 |只看该作者

有关结构,看不懂

是不是表示是位数

c语言中一个结构中每个字段占一位是什么写了我忘记了

论坛徽章:
0
3 [报告]
发表于 2003-02-28 09:25 |只看该作者

有关结构,看不懂

与位结构的表示方法不一样
楼主还是自己写个代码看看

看它的sizeof是多少

以下是位结构的定义
  
    二、位结构
    位结构是一种特殊的结构, 在需按位访问一个字节或字的多个位时, 位结构
比按位运算符更加方便。
    位结构定义的一般形式为:

  1.      struct位结构名{
  2.           数据类型 变量名: 整型常数;
  3.           数据类型 变量名: 整型常数;
  4.      } 位结构变量;
复制代码

    其中: 数据类型必须是int(unsigned或signed)。 整型常数必须是非负的整
数, 范围是0~15, 表示二进制位的个数, 即表示有多少位。
    变量名是选择项, 可以不命名, 这样规定是为了排列需要。
    例如: 下面定义了一个位结构。

  1.      struct{
  2.           unsigned incon: 8;  /*incon占用低字节的0~7共8位*/
  3.           unsigned txcolor: 4;/*txcolor占用高字节的0~3位共4位*/
  4.           unsigned bgcolor: 3;/*bgcolor占用高字节的4~6位共3位*/
  5.           unsigned blink: 1;  /*blink占用高字节的第7位*/
  6.      }ch;
复制代码

    位结构成员的访问与结构成员的访问相同。
    例如: 访问上例位结构中的bgcolor成员可写成:
      ch.bgcolor
  
    注意:
    1. 位结构中的成员可以定义为unsigned, 也可定义为signed,  但当成员长
度为1时, 会被认为是unsigned类型。因为单个位不可能具有符号。
    2. 位结构中的成员不能使用数组和指针, 但位结构变量可以是数组和指针,
如果是指针, 其成员访问方式同结构指针。
    3. 位结构总长度(位数), 是各个位成员定义的位数之和,  可以超过两个字
节。
    4. 位结构成员可以与其它结构成员一起使用。
    例如:

  1.      struct info{
  2.           char name[8];
  3.           int age;
  4.           struct addr address;
  5.           float pay;
  6.           unsigned state: 1;
  7.           unsigned pay: 1;
  8.           }workers;'
复制代码

    上例的结构定义了关于一个工从的信息。其中有两个位结构成员, 每个位结
构成员只有一位, 因此只占一个字节但保存了两个信息, 该字节中第一位表示工
人的状态, 第二位表示工资是否已发放。由此可见使用位结构可以节省存贮空间。
  
[/code]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2003-02-28 09:25 |只看该作者

有关结构,看不懂

(本次发言由于存在错误,所以已经作废)

论坛徽章:
0
5 [报告]
发表于 2003-02-28 09:34 |只看该作者

有关结构,看不懂

原帖由 "bombbaby" 发表:
出自linux内核代码,有关socket的内容/usr/src/linux-2.4/net/unix/af_unix.c
不知道这里的“:”是什么意思,以及为什么后面用“,”.

这是初始话,实际上是赋值.

论坛徽章:
0
6 [报告]
发表于 2003-02-28 09:37 |只看该作者

有关结构,看不懂

[quote]原帖由 "flw"]这是“位域”,学过 C 的都应该知道。[/quote 发表:


请教一下,到底是什么意思?

论坛徽章:
0
7 [报告]
发表于 2003-02-28 09:37 |只看该作者

有关结构,看不懂

对了

看的时候没有看到是定义变量
以为是定义结构呢

论坛徽章:
0
8 [报告]
发表于 2003-02-28 09:37 |只看该作者

有关结构,看不懂

原帖由 "bombbaby" 发表:
出自linux内核代码,有关socket的内容/usr/src/linux-2.4/net/unix/af_unix.c
不知道这里的“:”是什么意思,以及为什么后面用“,”.

不是很明显么?
proto_ops 是数据类型,
unix_stream_ops 这个结构是变量.
在后面的就是为结构的成员进行赋值.GNU/C的扩充用法.
这样的例子在LINUX内核比比皆是.

论坛徽章:
0
9 [报告]
发表于 2003-02-28 09:54 |只看该作者

有关结构,看不懂

收到,谢谢楼上的。开始还以为事定义结构呢!     

论坛徽章:
0
10 [报告]
发表于 2003-02-28 14:14 |只看该作者

有关结构,看不懂

不过还有个问题,就是为什么最后也有一个“,”。
后面的应该是一个函数,那么是不是就是说前面的等价于后面的函数?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP