Gast
#1325863
Was mach ich Falsch wenn mir avr-gcc das ausspuckt button.c:11: multiple definition of `key_valid' anzeige.c:23: first defined here Bzw. wie mach ichs richtig?
|
Anzeige
|
Compiler Fehler
Gast
#1325863
Was mach ich Falsch wenn mir avr-gcc das ausspuckt button.c:11: multiple definition of `key_valid' anzeige.c:23: first defined here Bzw. wie mach ichs richtig?
Gast
#1325874
da ist ein Fehler im Programm, da bin ich mir ganz sicher! Du hast die Variable "key_valid" mehrfach definiert. Der Compiler hat sie in der Datei anzeige.c das erste mal gefunden. Nsch einem Blick in die Glaskugel würde ich sagen Global definieren wäre eine Möglichkeit, böse Zungen würden sagen, der richtige Eintrag gehört in die Zeile 28.
Gast
#1325893
Und wo definiere ich sie Global? In main , vor main,....? Wenn der Compiler die Variable in button.c und in anzeige.c sieht, hast du wahrscheinlich den einen Quelltext mit #include in den anderen eingefügt - was ohnehin ziemlich schusselig ist. Es gibt Quelltexte (*.c, *.cpp), die werden direkt kompiliert und die enthalten bei Bedarf ein paar #include, die globalen Variablendefinitionen sowie Funktionsdefinitionen, und es gibt Headerdateien (*.h), die mit #include eingefügt werden und nur #define, weitere #include, Funktions-/Variablen-Deklarationen und Typdefinitionen enthalten. Eine globale Variable kann in einer Headerdatei DEKLARIERT werden (mit extern davor), und in genau einer *.c DEFINIERT (ohne extern). Wenn du sie in main() definierst, ist sie nicht mehr global, sondern lokal, nämlich in main(). Die Definition von globalen Variablen steht außerhalb aller Funktionen, also z.B. nach den ganzen #include und vor main().
Gast
#1325951
Ah ja habs mit etwas knobeln herausgefunden. Ganz schön verwirrend. Wo kann man das nachlesen? z.B. http://www.wachtler.de/ck/16_Aufteilung_mehrere_Quell.html oder im C-Buch deines Vertrauens (vielleicht?). Ob es so direkt in einem C-Buch steht, sei mal dahin gestellt. Aber wenn man Deklarationen, Definitionen und den Präprozessor verstanden hat (was mit einem halbwegs passablen Buch gehen sollte), ist der Rest ziemlich logisch.
Gast
#1325975
na das sagt dir doch dein compiler: button.c:11: multiple definition of `key_valid' anzeige.c:23: first defined here Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|