【发布时间】:2017-02-01 15:26:43
【问题描述】:
我在看 Glibc 代码。 glibc 队列的一些代码引起了我的注意。我无法为这个结构定义赋予意义。这个结构没有名字。为什么?它是如何工作的?
#define LIST_ENTRY(type) \
struct { \
struct type *le_next; /* next element */ \
struct type **le_prev; /* address of previous next element */ \
}
【问题讨论】:
-
看起来像是模板的替代品。
-
在许多情况下,宏表示部分代码。看看这个宏是如何在后面的代码中使用来查看完整的构造的。在那里,我敢肯定,您会看到缺少的名称以及所有必要的信息。
-
请注意,您引用的标题会将人们定向到 the manual page for
queue(3) 以获取使用文档。你读过那页吗?它确实为该宏和该文件中的其他宏提供了解释、使用说明和示例代码。