C - Konstrukt mit Header und globalen ariablen

Gast #3907651
Lesenswert?

Ich habe folgendes Konstrukt:
1
#include unter.h
2

3
int main(void)
4
{
5
// Hier würde ich gerne zustand weiterverarbeiten
6
zustand = FALSE; // -> Compiler Fehler
7
}

und unter.c:
1
BOOL zustand = TRUE;
2
void unter()
3
{
4
zustand = FALSE;
5
}

Die globale Variable unter würde ich gerne in meiner main Funktion 
weiterverarbeiten, der Compiler meckert aber. Ich inkludiere doch 
unter.h in der main, eigentlich müßte die Variable doch dem Compiler 
bekannt sein?

Wenn ich die Variable direkt über der int main(void) deklariere kommt es 
ebenso zu einem Compilerfehler. Dies ist für mich auch logisch, der 
andere Fehler erschließt sich mir jedoch nicht ganz.
Gast #3907773
Lesenswert?

Die Main Funktion ist nicht in unter.c?

Warum sollte der Compiler eine Variable, die in unter.c definiert ist, 
kennen, wenn Du unter.h einbindest?

Schreib über die Main Funktion:

extern BOOL zustand;
#3907934
Lesenswert?

Das ist mal wieder ein perfektes Beispiel dafür, wie man so eine Frage 
nicht stellt. Der maßgebliche Teil des Codes, nämlich unter.h bzw. die 
Deklaration von zustand fehlt, ebenso wie der Text der Fehlermeldung. 
Davon abgesehen habe ich den Verdacht, daß der oben gezeigte Code nicht 
der ist, bei dem der Fehler aufgetreten ist und in Wirklichkeit nie 
einen Compiler gesehen hat.

Dummschwaetzer schrieb:
> Die Main Funktion ist nicht in unter.c?
>
> Warum sollte der Compiler eine Variable, die in unter.c definiert ist,
> kennen, wenn Du unter.h einbindest?

Warum sollte er sie nicht kennen (unter der Voraussetzung, daß in 
unter.h die korrekte Deklaration der Variablen enthalten ist)?

> Schreib über die Main Funktion:
>
> extern BOOL zustand;

Das gehört in unter.h. Außerdem schreibt er:

uc_SD schrieb:
> Wenn ich die Variable direkt über der int main(void) deklariere kommt es
> ebenso zu einem Compilerfehler.

Die Frage ist, WELCHER Compilerfehler, und WIE sieht die Deklaration 
aus?
Außerdem ist noch interessant, wo BOOL und FALSE herkommen, welcher 
Compiler benutzt wird und wie er aufgerufen wird. Hinweis: Die 
Reihenfolge, in der man linkt, kann wichtig sein.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren