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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.