Я сделал 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
Я объявил jk в temp1.h как extern int, так почему я не могу инициализировать его в temp2.c?