我制作了两个与上面程序不同的文件 一个是 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 中初始化它?
最佳答案
int jk;
上述声明必须在代码的某处进行。此外,jk
必须是全局的。
关于c - 在一个文件中声明一个变量并在另一个文件中使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4274548/