Forum: Mikrocontroller und Digitale Elektronik [C] globale Variablendeklaration


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Waldmeister (Gast)


Lesenswert?

Hallo,

wie und wo muss ich eine Variable deklarieren, dass sie global auf
Datei ebene verfügbar ist.
Erklärung:

In der Datei usart.c wird die variable i manipuliert.
In der Datei main.c möchte ich die Variable i abfragen.
von Karl heinz B. (kbucheg)


Lesenswert?

Am besten machst du das so:


global.h
********

extern int i;   // der Name i, ist schlecht nimm was anderes
                // Abgesehen davon:
                // das extern sagt dem Compiler, dass es irgendwo
                // eine Variable namens 'i' gibt, und dass die
                // vom Typ int ist.

usart.c
*******
#include "global.h"
                // durch den include hier, wird die extern
                // Deklaration eingebracht.
                // Ab jetzt weiss der Compiler, dass es ein i
                // gibt welches vom Typ int ist

void foo()
{
  i = 5;
}

main.c
******
#include "global.h"
int i;          // und hier ist i tatsaechlich. In voller Pracht
                // Der vorhergehende include ist zwar nicht not-
                // wendig, hilft aber manchmal Fehler abzufangen.
                // zb. wenn du in global.h das i zu einem float
                // umwandelts, hier aber darauf vergisst und nach
                // wie vor i als int definierst.

int main()
{
  i = 7;    // dieses i und das in uart.c sind ein und dieselbe
            // Variable
}
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.