我有一个 C 程序 header.h 文件,它有这个链表和声明:
typedef struct _seg
{
int bits[256]; // # of bits in array = 256
struct _seg *next; // link to the next segment
} seg;
EXTERN seg *head; // this points to the start of the linked list
在我的main.c
,我有:
seg * p;
head = NULL;
...
for (i = 0; i < N; i++) { // N is a parameter; irrelevant for this problem
p = ( seg *) malloc(sizeof (seg)); // make a new segment
p->next = head; // add the new segment to the list
head = p;
}
clearAll()
我从我的文件中调用一个函数main.c
,在functions.c
函数中我有:
void clearAll() {
int i;
for (i = 0; i < 256; i++) {
p->bits[i] = 0;
}
}
我希望能够清除位数组中的所有位(将它们设置为 0)。每次我编译时都会出现一个错误,'p' undeclared (first use in this function)
即使我有#include "header.h"
声明也是如此。我只想能够引用和访问链表和其中的数组。
我这样做对吗?