mit oder ohne "extern"?
-
Hallo,
ich habe eine C-Datei und eine Header-Datei. Es gibt zwei Wege, eine Variable zu definieren, mit gleichen Wirkungen.
Weg 1:
test.c:#include "header.h" void main() { abc = 0xFF; }
header.h:
char abc;
Weg 2:
test.c:#include "header.h" void main() { char abc = 0xFF; }
header.h:
extern char abc;
Ist der zweite Weg empfehlenswerter?
Ciao
Campus
-
Nein, das ist eine Definition:
char abc;
und das ist eine Deklaration:
extern char abc;
In Headern sollte man nur deklarieren (und dann die entsprechende Definition in _eine_ Codedatei schreiben), da man ansonsten nicht den gewünschten Effekt erzielt.
Im übrigen ist void main falsch! http://www.c-plusplus.net/forum/viewtopic.php?t=39346
-
Außerdem ist in deinem Weg 2 abc nur eine
lokale Variable in main.extern char abc;
im Header bedeutet, daß der Linker noch
von irgendwoher eine andere (nicht-lokale) Definition
von abc benötigt.