我对 linux 内核代码中使用的语法有疑问。我对它的作用有直觉,但我想更正式地了解它。我正在使用内核v3.5.4
在文件/include/linux/sched.h
中定义了以下内容
struct task_struct {
volatile long state;
//some more data members
};
并且在文件/include/linux/init_task.h
文件中定义了以下内容:
#define INIT_TASK(tsk) {
.state = 0, \
//some more initializations
}
我对两件事感到困惑:
a)我觉得它用于初始化,但任何人都可以建议一些关于这种类型的结构初始化的好读物。
b)我不明白以下初始化是如何工作的。就像 this#define
和相应的task_struct
结构是如何相关的。
[编辑] 我还注意到以下几点:c)\
在每行必要的末尾。
d) 内核的许多部分都包含在#ifdef #endif
. 如果要初始化包装的数据成员,#ifdef #endif
我们可以使用这种形式的初始化。我的意思是我们可以像这样使用#ifdef #endif
insideINIT_TASK()
#define INIT_TASK(tsk) {
.state = 0, \
//some more initializations
#ifdef CX
.tickets = 5, \
#endif
}