PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : GCC : Probleme mit const Defination



oderlachs
14.05.2013, 12:51
Hallo Kenner der Gcc Materie !
Ich habe ein Problem mit dem definieren einer Const Variable. Ich hatte noch aus der ArduinoWeld serielle LCD.
Um die ser.Kommandos nicht immer neu in jedem Programm zu schreiben/definieren, habe ich versucht dies über eine Headerdatei zu realisieren.

Soweit so gut, aber irgendwie meckert der Compiler wegen mehrfacher(??) Definition von "const int LCDdelay=20;"
...kann aber eine zweimalige Definition nicht entdecken, bzw das ich sie 2mal definiert hätte.
Bin auch nicht soo gut , um alles an engl. Meldungen zu verstehen

Ich habe das Projekt mal gezippt und die Fehlermeldung in der Error.txt gespeichert. 25473

Ich arbeite mit AVR-Studio 4.18 (komme mit den neuen Vers. nicht klar) der µC ist Atmega32

Taktfreq. 3.686400MHz(STK500) die Baudrate ist 9600.

Vielleicht ist wer so nett mir ein wenig zu helfen. Zu dem Projekt sei gesagt , das noch nicht alles an Quelltext

fertig ist, mir ging es erst mal das LCD zu initalisieren...

Mit besten Grüssen und ein grosses Danke schon vorne weg...

Gerhard

Max Web
14.05.2013, 13:43
Hallo,

ich habe das Programm jetzt nur kurz überflogen, allerdings ist mir aufgefallen, dass in Deiner Headerdatei die Include-Guards fehlen, du die Datei jedoch mehrmals inkludierst.

Schreibe mal Folgendes in Deine Header-Datei:


#ifndef GROVE_LCD_H_
#define GROVE_LCD_H_
...Dein Code...
#endif


Das sollte das Problem beheben.

Grüße,

Max

ichbinsisyphos
14.05.2013, 13:48
Hmm, ich kann das nicht testen, aber die Deklaration ist nur einmal drin. Vielleicht wird der header mehrfach eingebunden?

Kennst du diesen Trick bei C/C++ header, wo man zu Beginn schreibt
#ifndef GROVE_H
#define GROVE_Hund am Schluss
#endif //GROVE_H

Alles zwischen #ifndef und #endif macht er nur, wenn die Variable GROVE_H noch nicht gesetzt wurde. Dann setzt er sie zuerst, bindet den Rest vom header ein und beim nächsten mal wird er dann von #ifndef abgewiesen.

oderlachs
14.05.2013, 15:14
Hallo und vielen Dank Euch beiden für den Hinweis. Ich hatte schon selber herrausgefunden das die h-datei zu oft eingebunden wird. Habe in der Main-datei die zu der h-datei gehörende #include... Zeile gelöscht. Dann war der Fehler weg.

Ich mache das zum ersten Male mit Gcc und AVR da bin ich n9och nicht so firm im Schreiben ohne Fehler...ja die Tricks #ifndef...usw kenne ich, doch habe ich nicht daran gedacht, wie gesagt der erste Versuch....

Auch habe ich mit dem Editor vom AVR Studio argeProblem wegen meiner schlechten Augen, darum schreibe ich erst alles mittels PS-Pad, da sehe ich besser und übersichtler. Habe das PS-Pad Projekt auf den Projektordner vom AVR Studio gelegt so kann ich schnell kontrollieren, aber manchmal ist doch mal ein Fehler den man nicht sieht.
Nun bin ich gespannt ob ich es mit dem Projekt schaffe das ser. LCD anzusteuern, komisch , das jeder Hersteller da eigene Befehle haben.

Na es wird schon werden und aus Fehlern kann man nur lernen.. :)

Gruss und Dank Gerhard