Hi ich möchte einige globale Variablen in mehrere c Dateien einbinden. Ich weiß, dass es hierzu schon einige Beiträge gibt wie: Beitrag "Globale Variablen, mehrere Dateien" oder http://www2.informatik.uni-halle.de/lehre/c/c_globv.html Meine Frage ist eigentlich nur, ob ich EXTERN hierfür überhaupt benötige. (Was genau EXTERN macht verstehe ich noch nicht so ganz^^) Ich habe nämlich mittels Atmel Studio 6 folgendes Programm mittels Debugger ausprobiert und es funktioniert so. Oder gibt es einen Schönheitsfehler, welchen ich nicht bemerkt habe? Ich habe auch irgendwo mal gelesen, dass man die global.h in jedes c file einbinden müsste. Dies geht aber nicht, da dann die Meldung redefinition of 'a' erscheint. //------main.c------- #include <avr/io.h> #include "global.h" #include "test.c" #include "test2.c" int main(void) { while(1) { hoch(); hoch_2(); a++; } } //-------global.h------ uint8_t a =2; //------test.c----- void hoch (void) { a++; } //----test2.c void hoch_2(void) { a=a+2; }
Gast
#3667171
Code mittels #include einzubinden ist sehr schlechter Stil. Die einzelnen .c werden normalerweise einzeln compiliert (in Objektdateien) und dann vom Linker zusammen gebunden. Dann darfst du deine globalen Variablen auch nicht mehr in der .h definieren sondern nur deklarieren. Und da gehört dann auch das extern davor, damit der Compiler weiß, dass die Variable woanders definiert wurde.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.