结构体里.是什么意思
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,
里面的.是什么意思? 貌似是在对结构体赋值,不过看不懂,没这么用过 看了一下,确实是对结构体赋值的一个方法。可以参考ISO标准 “ISO/IEC 9899 - Programming languages - C”:
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf
看138-139页关于结构体初始化的内容,可以看到,以“.”开头的标识符,表示当前结构体的成员。 原帖由 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-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页关于结构体初始化的 ...
这不是赋值,而是初试化.这两个是不同的. 噢可:em15:3Q 恩,gcc里很早就在用~~ 结构体有两种赋初值的 方法:
#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;
}
~ 在驱动中,貌似就是这样向结构题赋值的。。