如何声明一个带有链表的结构变量?

时间:2017-12-12 19:50:03

标签: c struct linked-list linux-kernel

在我的.h文件中,我有:

#include <linux/list.h>
struct myNode
{
    struct list_head list;
    int myID;
    int myBadge;
};
extern struct myNode firstNode;

对于.c文件中的define firstNode 变量,我试过这个:

#include "test.h"
INIT_LIST_HEAD(&firstNode.list);

但是当我编译时,我收到错误:

expected declaration specifiers '...' before '&' token INIT_LIST_HEAD(&firstNode.list);

我不太熟悉错误的实际含义(对不起,我对C不熟悉),所以我不确定为什么/这意味着什么。

1 个答案:

答案 0 :(得分:0)

如评论中所述,在全局范围(即,在任何函数体外),可执行代码是fobidden;这里只能使用声明和定义。

对于定义firstNode全局变量和初始化列表,请使用LIST_HEAD_INIT宏:

#include "test.h"
struct myNode firstNode =
{
    .list = LIST_HEAD_INIT(list);
}