#Define宏的结构
Structure of #define Macro
我在内部发现了这个奥术构造/linux/wait.h
#define DEFINE_WAIT_FUNC(name, function)
wait_queue_t name = {
.private = current,
.func = function,
.task_list = LIST_HEAD_INIT((name).task_list),
}
我一般来说,我对宏和预杂项指令都非常了解,但我绝对迷失了这一点。有人可以详细说明以上代码 struction ,包括在行末尾的''。谢谢。
注意:我不需要知道它在Linux中的作用,只有其背后的句法含义。
宏中的 字符是线延续字符。它只允许宏跨越多行。
宏(大概)正在通过功能指针和执行共同初始化的结构来进行结构。唯一说您想将这些结构添加到列表中,然后(在执行步骤中)调用不同的功能。一个更好的问题至少包括wait_queue_t定义。
根据其他(以及许多参考文献),字符通过C-Prepropersors继续任何行。至于其余的,
#define define_wait_func(名称,函数)
宏的定义。
wait_queue_t name = {
用宏替换声明 wait_queue_t
name 。
.private = current,
使用current
任务指针初始化private
Wait_queue_t结构成员。这也是Linux树中每个体系结构定义的宏(也许是内联汇编器)。
.func = function,
将func
成员设置为函数参数。
.task_list = LIST_HEAD_INIT((name).task_list),
将列表初始化为空。 task_list
指向自己。
.
符号用于贯穿内核源,并且是 gcc 功能(以及后来的c99),称为指定的intializers 。不必设置结构的所有成员,而只有将命名的成员设置为零。这允许人们在不修改所有声明的情况下扩展结构。它不是 c-preprocessor 功能,而是'c'语言(扩展)。
相关文章:
- 如何循环打印顶点结构
- 通过方法访问结构
- 使用不带参数的函数访问结构元素
- 预处理器:插入结构名称中的前一个行号
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 孤立代码块在结构中引发异常
- 有什么方法可以遍历结构吗
- 如何在 C# 中映射双 C 结构指针?
- 如何在C++中使用结构生成映射
- 无法将结构注册为增强几何体3D点
- 多成员Constexpr结构初始化
- C++将文本文件中的数据读取到结构数组中
- 如何重构类层次结构以避免菱形问题
- 如何在C++中序列化结构数据
- std::vector的包装器,使数组的结构看起来像结构的数组
- 没有为自己的结构调用列表推回方法
- 奇怪的结构&GCC&clang(void*返回类型)
- #Define宏的结构
- 带有外部 #define 和 typedef 结构的静态库
- 在 C 中,除了使用 val 之外,不能更改结构属性 #define