此结构分配代码中的 "xillybus_of_match[]" 术语表示什么?
What does "xillybus_of_match[]" term in this struct assignment code signify?
此代码块取自 linux 内核设备驱动程序教程,我不确定如何解释它。我只询问 C 语法。根据我对 C 语法结构的理解,遵循以下约定 ...
struct Books {
char title[50];
char author[50];
char subject[100];
int book_id;
};
struct Books Book1;
不过好像在“xillybus_of_match[]”下面多了一个词。这个术语在C语言中是什么意思?
static struct of_device_id xillybus_of_match[] __devinitdata = {
{ .compatible = "xlnx,xillybus-1.00.a", },
{}
};
MODULE_DEVICE_TABLE(of, xillybus_of_match);
谢谢!
以“static struct
tag-name”开头的声明的一般形式是“static struct
tag-name declarator =
initializer [可选更多逗号分隔的声明符和初始化符…]”,至少在基础 C 语言中是这样由标准定义。
一个问题是,尽管声明符可以有多种形式,但其中 none 匹配 xillybus_of_match[] __devinitdata
。这开辟了涉及预处理器宏的各种可能性 and/or 编译器扩展。
根据经验(因为在早期的书籍、教程或类中一般不会教授),这种形式用于提供编译器属性或其他语言扩展。 __devinitdata
可以是一个宏,根据不同的情况,例如开始针对哪个计算平台或者选择哪些特征来构建,以各种方式定义。可以用空白代替。在任何情况下,效果很可能声明等同于 static struct of_device_id xillybus_of_match[] = { *initial values* };
,可能还有一些由 __devinitdata
.
添加的额外信息
如果是,则 xillybus_of_match
被声明为一个数组,其元素数量由初始值设定项确定,其元素类型为 struct of_device_id
。该声明还定义了数组并使用初始化程序对其进行了初始化。
使用常用开关编译代码,但使用 GCC 或 Clang,添加 -E
并删除其他影响输出的开关(例如 -o
、-S
)将产生预处理的结果,让您可以看到 __devinitdata
被替换成了什么。
此代码块取自 linux 内核设备驱动程序教程,我不确定如何解释它。我只询问 C 语法。根据我对 C 语法结构的理解,遵循以下约定 ...
struct Books {
char title[50];
char author[50];
char subject[100];
int book_id;
};
struct Books Book1;
不过好像在“xillybus_of_match[]”下面多了一个词。这个术语在C语言中是什么意思?
static struct of_device_id xillybus_of_match[] __devinitdata = {
{ .compatible = "xlnx,xillybus-1.00.a", },
{}
};
MODULE_DEVICE_TABLE(of, xillybus_of_match);
谢谢!
以“static struct
tag-name”开头的声明的一般形式是“static struct
tag-name declarator =
initializer [可选更多逗号分隔的声明符和初始化符…]”,至少在基础 C 语言中是这样由标准定义。
一个问题是,尽管声明符可以有多种形式,但其中 none 匹配 xillybus_of_match[] __devinitdata
。这开辟了涉及预处理器宏的各种可能性 and/or 编译器扩展。
根据经验(因为在早期的书籍、教程或类中一般不会教授),这种形式用于提供编译器属性或其他语言扩展。 __devinitdata
可以是一个宏,根据不同的情况,例如开始针对哪个计算平台或者选择哪些特征来构建,以各种方式定义。可以用空白代替。在任何情况下,效果很可能声明等同于 static struct of_device_id xillybus_of_match[] = { *initial values* };
,可能还有一些由 __devinitdata
.
如果是,则 xillybus_of_match
被声明为一个数组,其元素数量由初始值设定项确定,其元素类型为 struct of_device_id
。该声明还定义了数组并使用初始化程序对其进行了初始化。
使用常用开关编译代码,但使用 GCC 或 Clang,添加 -E
并删除其他影响输出的开关(例如 -o
、-S
)将产生预处理的结果,让您可以看到 __devinitdata
被替换成了什么。