Chinaunix

标题: 这个结构体,很奇怪!:( [打印本页]

作者: harryccf    时间: 2005-10-14 19:40
标题: 这个结构体,很奇怪!:(
static struct proto_ops bnep_sock_ops = {
        family:     PF_BLUETOOTH,
        release:    bnep_sock_release,
        ioctl:      bnep_sock_ioctl,
        bind:       sock_no_bind,
        getname:    sock_no_getname,
        sendmsg:    sock_no_sendmsg,
        recvmsg:    sock_no_recvmsg,
        poll:       sock_no_poll,
        listen:     sock_no_listen,
        shutdown:   sock_no_shutdown,
        setsockopt: sock_no_setsockopt,
        getsockopt: sock_no_getsockopt,
        connect:    sock_no_connect,
        socketpair: sock_no_socketpair,
        accept:     sock_no_accept,
        mmap:       sock_no_mmap
};
release:    bnep_sock_release
这里的family和 bnep_sock_release都是函数,怎么会有这种用法!
作者: zalem    时间: 2005-10-14 20:00
标题: 这个结构体,很奇怪!:(
这个应该是gcc的扩展...
作者: bleem1998    时间: 2005-10-14 20:03
标题: 这个结构体,很奇怪!:(
这。。。
难道DOS下的Turbo C不能这样用吗?
作者: zalem    时间: 2005-10-14 20:14
标题: 这个结构体,很奇怪!:(
这个albcamus最有发言权...
作者: albcamus    时间: 2005-10-14 20:30
标题: 这个结构体,很奇怪!:(
原帖由 "bleem1998" 发表:
这。。。
难道DOS下的Turbo C不能这样用吗?


嘿,你怎么知道俺搞过这个知识点

to楼主:这个是gcc的扩展,为的是给一个结构体变量赋值时可以省略掉一些域。
后来C99也支持这一功能,不过语法不一样,于是gcc一并支持:

  1. #include <stdlib.h>;
  2. #include <stdio.h>;
  3. #include <string.h>;


  4. typedef struct student {
  5.         int age;
  6.         char name[1024];
  7.         int score;
  8. } mystruct;


  9. int main(void)
  10. {
  11. //GCC扩展用法
  12.         mystruct s1 = {
  13.                 age:    21,
  14.                 score:  60
  15.         };

  16.         printf("s1.age is %d\n", s1.age);

  17. //C99用法
  18.         mystruct s2 = {
  19.                 .score = 34
  20.         };
  21.         printf("s2.score is %d\n", s2.score);




  22.         return 0;
  23. }
复制代码

作者: 1jjk    时间: 2005-10-14 20:51
标题: 这个结构体,很奇怪!:(
事在人为
我记得好象有这样的!
作者: harryccf    时间: 2005-10-14 22:07
标题: 这个结构体,很奇怪!:(
谢谢,几位,兄弟了




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2