satfire 发表于 2007-08-21 01:20

结构体里.是什么意思

struct scsi_host_template usb_stor_host_template = {
421 /* basic userland interface stuff */
422 .name = "usb-storage",
423 .proc_name = "usb-storage",
424 .proc_info = proc_info,


里面的.是什么意思?

sakulagi 发表于 2007-08-21 08:50

貌似是在对结构体赋值,不过看不懂,没这么用过

sakulagi 发表于 2007-08-21 09:02

看了一下,确实是对结构体赋值的一个方法。可以参考ISO标准 “ISO/IEC 9899 - Programming languages - C”:

http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf

看138-139页关于结构体初始化的内容,可以看到,以“.”开头的标识符,表示当前结构体的成员。

Godbach 发表于 2007-08-21 10:05

原帖由 sakulagi 于 2007-8-21 09:02 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
看了一下,确实是对结构体赋值的一个方法。可以参考ISO标准 “ISO/IEC 9899 - Programming languages - C”:

http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf

看138-139页关于结构体初始化的 ...

正解,确实是对结构体赋初值的。前一段再看Linux2.6内核的usb driver,里面对结构体赋值就是用的这种方法。好像这是2.6内核中新采用的方式吧。

sakulagi 发表于 2007-08-21 11:24

这个语法倒是不是什么新鲜的语法了 :)

MMMIX 发表于 2007-08-21 14:38

原帖由 sakulagi 于 2007-8-21 09:02 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
看了一下,确实是对结构体赋值的一个方法。可以参考ISO标准 “ISO/IEC 9899 - Programming languages - C”:

http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf

看138-139页关于结构体初始化的 ...
这不是赋值,而是初试化.这两个是不同的.

satfire 发表于 2007-09-13 01:49

噢可:em15:3Q

gaocheng 发表于 2007-09-13 03:37

恩,gcc里很早就在用~~

xiaozhu2007 发表于 2007-10-07 15:50

结构体有两种赋初值的 方法:
#include<stdio.h>

char*                  str = "test struct";

typedef struct struct1 struct1;
struct struct1{
      char    *name ;
      int   id ;
};

int main(void)
{
      //struct1                     struct_1 = { str ,0};
      struct1                         struct_1 = {            //比上面的 好处就是:如果定义了 一个很 复杂的 结构体的话,那么这种初始化的方法可以让
                                                                                        人一目了然的知道各个值是赋给结构体的哪个成员。      
                                                      .name = str,
                                                      .id = 0
                                        };
      printf("name = %s, id = %d\n", struct_1.name, struct_1.id);
      printf("Welcome to Fedora!\n");
      return 0;
}
~

andrewqin 发表于 2008-10-05 01:01

在驱动中,貌似就是这样向结构题赋值的。。
页: [1] 2 3
查看完整版本: 结构体里.是什么意思