Forum: Mikrocontroller und Digitale Elektronik Fehler in der Deklarierung


von Markus P. (sebastianwurst)


Lesenswert?

Hallo,
ich bekomme diese Scheiß Fehlermeldung nicht weg:

relais.h:6: error: expected '=', ',', ';', 'asm' or '__attribute__' 
before 'Eingang'

So ist das in der .h deklariert:
1
#ifndef _relais_H_
2
#define _relais_H_
3
4
5
extern bool Eingang[16]={false};
6
#endif

In der .c wird die Variable dann verwendet.
Was mache ich denn falsch?!?

von !gast (Gast)


Lesenswert?

Weiß der Compiler was ein "bool" ist? Mach doch testweise mal ein 
typedef unsigned char bool oder so.

von Peter II (Gast)


Lesenswert?

hast du auch ein passenden header für bool eingebunden, bool ist im 
alten C standard nicht bekannt.

von Andreas B. (andreas_b77)


Lesenswert?

#include <stdbool.h> vergessen. Außerdem ist es etwas sinnlos, "extern" 
Variablen zu initialisieren.

von Markus P. (sebastianwurst)


Lesenswert?

#include <stdbool.h>
ist drin, mit char Eingang[16]={[0 ... 15] = 0}; klappts... Keine 
Ahnunge, es muss auch nicht unbeding bool sein.
Warum ist es sinnlos externen Variablen zu initialisieren?

von Markus P. (sebastianwurst)


Lesenswert?

Im .c schreib ich so:
1
char Eingang[16]={[0 ... 15] = 0};
im .h schreib ich so:
1
extern char  Eingang[16];
und somit kann ich diese Variable dann auch noch in einem anderen .c 
verwenden...

von Peter II (Gast)


Lesenswert?

Markus P. schrieb:
> Warum ist es sinnlos externen Variablen zu initialisieren?

weil an diese stelle überhaupt keine zuweisung stattfindet, extern ja ja 
das die variable "irgendwo" anders erzeugt wird. An dieser stelle müsste 
man sie mit false füllen.

von Thomas E. (thomase)


Lesenswert?

Markus P. schrieb:
> extern char  Eingang[16];
> und somit kann ich diese Variable dann auch noch in einem anderen .c
> verwenden...
Nein. Damit teilst du dem Compiler mit, daß irgendwo in deinem Projekt 
ein
globales Array vom Typ char definiert ist.

mfg.

von Karl H. (kbuchegg)


Lesenswert?

Markus P. schrieb:

> Warum ist es sinnlos externen Variablen zu initialisieren?

es ist nicht nur sinnlos, es ist sogar falsch.
Die Initialisierung hebt das extern auf.

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.