在一个文件中声明一个变量并在另一个文件中使用它

时间:2010-11-25 07:19:18

标签: c

我制作了2个与上述程序不同的文件 一个是temp1.h,另一个是temp2.​​c来理解如何使用extern。 所以这是temp1.h

#include<stdlib.h>
typedef struct node * bond;
extern int jk;

和temp2.​​c是

#include<stdio.h>
#include<temp1.h>
struct node {
int data;
};
int main ()
{
bond t1;
t1=(bond)malloc(sizeof(bond));
t1->data=23;
printf("the data is %d\n",t1->data);
jk=0;
printf("The variable jk = %d\n",jk);
}

当我编译这些时 cc -I ./ temp2.c然后我

/tmp/ccdeJCat.o: In function `main':
temp2.c:(.text+0x3c): undefined reference to `jk'
temp2.c:(.text+0x46): undefined reference to `jk'
collect2: ld returned 1 exit status

我在temp1.h中将jk声明为extern int,为什么我不能在temp2.​​c中初始化它?

3 个答案:

答案 0 :(得分:2)

没有链接的对象文件没有将其声明为extern,因此没有定义。

答案 1 :(得分:2)

int jk;

上述声明必须在代码中的某处进行。此外,jk必须是全球性的。

答案 2 :(得分:1)

而不是#include&lt; temp1.h&gt;

替换为#include“temp1.h”