如何正确定义全局struct变量?

时间:2016-09-09 23:38:32

标签: c struct

file1.c我有:

struct node
{
    int key;
    jobPtr jobX;
    struct node *next;
};

struct node *head = NULL;
void method()
{
 ...
}

我想在head中使用file2.c指针。所以我添加到头文件headerX.h

extern struct node *head;

file2.c我这样做:

struct node *head;
int main() {

}

但在file2.c我无法使用head。我做错了什么?

UPD

我在file2.c文件中删除了struct node *head,但我还是不能使用head指针。我的IDE允许我在file2.c中键入head但是当我想调用structure IDE的元素时,IDE会给我no suggestions for members of struct node *

1 个答案:

答案 0 :(得分:3)

您在两个地方定义了head

这是声明

extern struct node *head;

虽然这是定义

struct node *head;

应该只有一个定义,所以删除file2.c中的那个。

编辑:

extern声明外,您的标头文件还应包含struct node的定义:

struct node {
    // define fields here
};