在我的.h
文件中,我有:
#include <linux/list.h>
struct myNode
{
struct list_head list;
int myID;
int myBadge;
};
extern struct myNode firstNode;
为了在
.c
文件中定义firstNode变量,我尝试了以下方法:#include "test.h"
INIT_LIST_HEAD(&firstNode.list);
但是当我编译时,出现错误:
expected declaration specifiers '...' before '&' token INIT_LIST_HEAD(&firstNode.list);
我对错误的实际含义不太了解(对不起,我对C不太熟悉),所以我不确定为什么/这意味着什么。
最佳答案
如注释中所述,在全局范围内(即,在任何函数的主体之外),可执行代码都是禁止的;在此只能使用声明和定义。
要定义firstNode
全局变量并在其中初始化列表,请使用LIST_HEAD_INIT
宏:
#include "test.h"
struct myNode firstNode =
{
.list = LIST_HEAD_INIT(list);
}