Angenommen, Ihre Variable ist global und nicht statisch.
Sie müssen es in einer Header-Datei deklarieren. Wir verwenden hierfür das Schlüsselwort extern
. Wie in Kommentaren erwähnt, ist dieses Schlüsselwort nicht notwendig, aber die meisten C-Benutzer bevorzugen es, es in Kopfzeilen zu verwenden, dies ist eine Konvention.
stackoverflow.h:
#ifndef STACHOVERFLOW_H
#define STACHOVERFLOW_H
extern int my_var;
#ifndef
Und Sie es in Quelldatei initialisieren. (Die Verwendung des Schlüsselworts extern
ist nicht zulässig, wenn Sie einen Initialisierungswert angeben möchten).
stackoverflow.c
#include "stackoverflow.h"
int my_var = 50;
Legen Initialisierungswert nicht in einem Header, oder Sie werden einen Linker Fehler, wenn der Header mindestens zweimal verwendet wird.
Jetzt können Sie Ihre Variable in jedem anderen Modul verwenden, indem Sie die Kopfzeile einfügen.
main.c
#include <stdio.h>
#include "stackoverflow.h"
int main()
{
printf("my_var = %d\n", my_var);
return 0;
}
Einschließlich header "stackoverflow.h" in "stackoverflow.c" ist ein Weg, um sicherzustellen Definitionen in Quelldatei übereinstimmen Erklärungen in Header-Datei zu erhalten. Dies erlaubt Fehler bei der Kompilierung anstelle von manchmal kryptischen Linkerfehlern.
Edit: Dies ist überhaupt nicht der Weg, um eine Variable "privat" zu machen. Sie müssen eine statische Variable verwenden, um sie "privat" zu machen. Siehe R Sahu's answer
Sobald wir stackoverflow.h in stackoverflow.c. Der Compiler wird das ganze Ding in stackoverflow.c kopieren, oder? warum sollte es dann extern sein?Entschuldigung, wenn meine Frage dumm ist –
Ja, Sie haben Recht, Bhavith C Acharya. Es zeigt auf meine Antwort richtig? – shafeeq
Entschuldigung, liebe @ user3302647 Ich habe meine Antwort nicht bekommen. Meine Frage ist es notwendig, 'extern int my_var' in stackoverflow.h –