Forum: Compiler & IDEs datendeklaration / extern


von TT (Gast)


Lesenswert?

Hallo;
ich hab ein Programm das aus mehreren C-Datein besteht
und wollte jetzt das meine Variable A über alle in jeder C-Datei die 
selbe ist.
des wegen hab ich in der ersten C-Datei folgendes stehen:
1
uint8_t A,
und in der zweiten C-Datei:
1
extern uint8_t A;
was meinem Verständnis nach ja eigentlich dafür sorgen sollte das 
Variable A in Datei 2 die selbe ist wie in Datei 1.

aber ich bekomme vom AVR-GCC folgende Meldung:

../Datei2.C:63: error: duplicate `extern'

was mach ich falsch bzw wo liegt mein Denkfehler?
Ich wär für eine Lösung bzw Lösungsvorschlag sehr dankbar

MFG
TT

von Karl H. (kbuchegg)


Lesenswert?

TT wrote:
> Hallo;
> ich hab ein Programm das aus mehreren C-Datein besteht
> und wollte jetzt das meine Variable A über alle in jeder C-Datei die
> selbe ist.
> des wegen hab ich in der ersten C-Datei folgendes stehen:
>
1
> uint8_t A,
2
>
> und in der zweiten C-Datei:
>
1
> extern uint8_t A;
2
>
> was meinem Verständnis nach ja eigentlich dafür sorgen sollte das
> Variable A in Datei 2 die selbe ist wie in Datei 1.
>
> aber ich bekomme vom AVR-GCC folgende Meldung:
>
> ../Datei2.C:63: error: duplicate `extern'
>
> was mach ich falsch bzw wo liegt mein Denkfehler?

Denkfehler: keiner. Das ist schon richtig so.

> Ich wär für eine Lösung bzw Lösungsvorschlag sehr dankbar

Du hast irgendwo, irgendwetwas falsch gemacht.
Aber aus dem kurzen Auszügen kann man nicht erkennen
was.

Vorschlag: Mach ein kleines Testprojekt, dass den Fehler
zeigt und poste das.

von Stefan (Gast)


Lesenswert?

Dein Verständnis ist korrekt. Der Fehler ist vermutlich in den nicht 
angegebenen Sourcecodezeilen versteckt.

von TT (Gast)


Lesenswert?

So ich hab mein fehler gefunden.
Und zwar hatte ich noch folgende Zeilen drin:
1
#define GLOBAL_EXT

und in einem Header noch:
1
#ifdef  GLOBAL_EXT
2
#define uint8_t    uint8_t
3
#else
4
#define uint8_t    extern uint8_t
5
#endif

und so mit hatte ich dann ja im prinzip:
1
extern extern uint8_t a;
da stehen.... und das des nicht funktionieren kann leuchtet ein....

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.