Ich habe 2 Dateien erstellt, die sich von dem obigen Programm unterscheiden man ist temp1.h und ein anderer ist temp2.c zu verstehen, wie extern verwendet wird. So, hier ist temp1.heine Variable in einer Datei deklarieren und in einem anderen
#include<stdlib.h>
typedef struct node * bond;
extern int jk;
und temp2.c ist
#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);
}
und wenn ich diese als kompilieren cc -I ./ temp2.c
dann bekomme ich
/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
Ich hatte jk in temp1 erklärt .h als extern int also warum kann ich es nicht in temp2.c initialisieren?
Dies ist im Grunde die gleiche Frage wie die [vorherige] (http://stackoverflow.com/questions/4274190/warning-in-extern-declaration). Wenn Sie etwas klären müssen, bearbeiten Sie die Frage bitte. –
+1 zu Matthew Flaschen, Warum kann die vorherige Frage nicht bearbeitet werden? – Jay
Siehe [SO 1433204] (http://stackoverflow.com/questions/1433204/what-are-extern-variables-in-c) für eine Erklärung, wie globale Variablen in C definiert und verwendet werden. –