在文件中声明了一个自引用结构'header.h'并尝试在'main.c'中定义它,这会导致错误



"main.c">

#include "header.h"
int main()
{
int ch;
start = NULL;
printf("Enter your choice:n");
printf("1 --> To create listn");
switch (ch)
{
case 1:
start = create(start);
break;
}
}

"标题.h">

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct node NODE;
struct node
{
int info;
NODE* link;
};
extern NODE *start;
NODE* create(NODE*);
  • 该错误是对main中"start"的未定义引用,但是我已经将其声明为头文件,我什至在"main.c"文件中包含了"header.h"文件。

在你声明header.hextern NODE *start

但没有给出start的定义

您需要定义start.通常在某个.c文件中。 可能在main.c.

NODE *start;   //in Global space, above main() function.

另请参阅此答案以获取更多信息。

最新更新