Hallo Forum,
ich habe seit zwei Jahren kein AVR Projekt mehr gehabt.
Das jetzige ist eine Steuerung für LED via Fernbedienung.
Soweit auch kein Problem.
Jetzt habe ich aber meine verschiedenen Dateien in den ich den Code habe
in ein Projekt zusammengeführt und es kommen etliche Fehlermeldungen.
Ich muss zugeben das ich bis jetzt nicht all zu viel mit GCC zu tun
hatte.
Habe die Headerfiles mit einem Tutorial erstellt.
Und ich habe ganz sicher die ganzen Dinge declariert.
Ich habe das ganze Projekt als Zip angehangen.
Evt. findet ihr den Fehler.
Fehlermeldungen:
1
Error 1 macro names must be identifiers C:\Users\Timm\Documents\AVRStudio\Led_Treiber_Kim\Led_Treiber_Kim\4-Digit-Schiebe.h 1 9 Led_Treiber_Kim
2
Error 3 'Digit_DDR' undeclared (first use in this function) C:\Users\Timm\Documents\AVRStudio\Led_Treiber_Kim\Led_Treiber_Kim\4-Digit-Schiebe.c 7 2 Led_Treiber_Kim
3
Error 4 each undeclared identifier is reported only once for each function it appears in C:\Users\Timm\Documents\AVRStudio\Led_Treiber_Kim\Led_Treiber_Kim\4-Digit-Schiebe.c 7 2 Led_Treiber_Kim
4
Error 5 'digit1' undeclared (first use in this function) C:\Users\Timm\Documents\AVRStudio\Led_Treiber_Kim\Led_Treiber_Kim\4-Digit-Schiebe.c 7 22 Led_Treiber_Kim
5
Error 6 'digit2' undeclared (first use in this function) C:\Users\Timm\Documents\AVRStudio\Led_Treiber_Kim\Led_Treiber_Kim\4-Digit-Schiebe.c 7 36 Led_Treiber_Kim
6
Error 7 'digit3' undeclared (first use in this function) C:\Users\Timm\Documents\AVRStudio\Led_Treiber_Kim\Led_Treiber_Kim\4-Digit-Schiebe.c 7 50 Led_Treiber_Kim
7
Error 8 'digit4' undeclared (first use in this function) C:\Users\Timm\Documents\AVRStudio\Led_Treiber_Kim\Led_Treiber_Kim\4-Digit-Schiebe.c 7 64 Led_Treiber_Kim
8
Error 9 'Digit_Schiebe_DDR' undeclared (first use in this function) C:\Users\Timm\Documents\AVRStudio\Led_Treiber_Kim\Led_Treiber_Kim\4-Digit-Schiebe.c 8 2 Led_Treiber_Kim
9
Error 10 'clock_digit' undeclared (first use in this function) C:\Users\Timm\Documents\AVRStudio\Led_Treiber_Kim\Led_Treiber_Kim\4-Digit-Schiebe.c 8 30 Led_Treiber_Kim
10
Error 11 'data_digit' undeclared (first use in this function) C:\Users\Timm\Documents\AVRStudio\Led_Treiber_Kim\Led_Treiber_Kim\4-Digit-Schiebe.c 8 49 Led_Treiber_Kim
11
Error 12 'strobe_digit' undeclared (first use in this function) C:\Users\Timm\Documents\AVRStudio\Led_Treiber_Kim\Led_Treiber_Kim\4-Digit-Schiebe.c 8 67 Led_Treiber_Kim
12
Error 13 'Digit_Port' undeclared (first use in this function) C:\Users\Timm\Documents\AVRStudio\Led_Treiber_Kim\Led_Treiber_Kim\4-Digit-Schiebe.c 23 12 Led_Treiber_Kim
13
Error 14 'digit1' undeclared (first use in this function) C:\Users\Timm\Documents\AVRStudio\Led_Treiber_Kim\Led_Treiber_Kim\4-Digit-Schiebe.c 23 32 Led_Treiber_Kim
14
Error 15 'digit2' undeclared (first use in this function) C:\Users\Timm\Documents\AVRStudio\Led_Treiber_Kim\Led_Treiber_Kim\4-Digit-Schiebe.c 26 32 Led_Treiber_Kim
15
Error 16 'digit3' undeclared (first use in this function) C:\Users\Timm\Documents\AVRStudio\Led_Treiber_Kim\Led_Treiber_Kim\4-Digit-Schiebe.c 29 32 Led_Treiber_Kim
16
Error 17 'digit4' undeclared (first use in this function) C:\Users\Timm\Documents\AVRStudio\Led_Treiber_Kim\Led_Treiber_Kim\4-Digit-Schiebe.c 32 32 Led_Treiber_Kim
17
Error 18 'Digit_Schiebe_Port' undeclared (first use in this function) C:\Users\Timm\Documents\AVRStudio\Led_Treiber_Kim\Led_Treiber_Kim\4-Digit-Schiebe.c 38 5 Led_Treiber_Kim
18
Error 19 'data_digit' undeclared (first use in this function) C:\Users\Timm\Documents\AVRStudio\Led_Treiber_Kim\Led_Treiber_Kim\4-Digit-Schiebe.c 38 33 Led_Treiber_Kim
19
Error 20 'clock_digit' undeclared (first use in this function) C:\Users\Timm\Documents\AVRStudio\Led_Treiber_Kim\Led_Treiber_Kim\4-Digit-Schiebe.c 46 33 Led_Treiber_Kim
20
Error 21 'digit_delay' undeclared (first use in this function) C:\Users\Timm\Documents\AVRStudio\Led_Treiber_Kim\Led_Treiber_Kim\4-Digit-Schiebe.c 50 13 Led_Treiber_Kim
Na dann zeig mal 4-Digit-Schiebe.h
Denn davon handelt die erste Fehlermeldung
PS: Ich würde das Projekt erst mal auf ein anderes Verzeichnis schieben.
Das hat doch keinen Sinn, wenn dir der Compielr in jeder Fehlermeldung
die Zeile mit einer elends langen Pfadanagabe vollmüllt.
Mööp.
Wie der Compiler sagt: Makro Names must be identifiers.
D.h. da gelten die selben Regeln wie für Variablennamen oder
Funktionsnamen: sie können nicht mit einer Ziffer anfangen.
1
#ifndef FOUR_DIGIT_SCHIEBE_H_
2
#define FOUR_DIGIT_SCHIEBE_H_
3
...
wäre ok.
Ändern, neu compilieren und ein ganzer Haufen Folgefehler wird gleich
mit verschwinden.
Man fängt immer beim ersten Fehler an. Egal wieviele dann noch auf der
Liste sind. Wenns noch besonders viele Fehler auf der Liste sind, dann
sind viele davon einfach nur Folgefehler vom ersten. Daher: nicht
entmutigen lassen, einfach den ersten korrigieren und nochmal
compilieren. Und dann wieder den ersten Fehler bearbeiten.
"Preprocessing tokens fall into five broad classes: identifiers,
preprocessing numbers, string literals, punctuators, and other. An
identifier is the same as an identifier in C: any sequence of letters,
digits, or underscores, which begins with a letter or underscore."
EDIT: Ups, zu langsam.
Dafür sind neue Fehler da.
In den Delay funktionenn von AVR Studio.
1
Warning 1 type defaults to 'int' in declaration of 'digit_init' C:\Users\Timm\Documents\AVRStudio\Led_Treiber_Kim\Led_Treiber_Kim\4-Digit-Schiebe.h 24 8 Led_Treiber_Kim
2
Error 2 storage class specified for parameter '__fuse_t' c:\program files (x86)\atmel\avr studio 5.0\avr toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/avr/fuse.h 252 3 Led_Treiber_Kim
3
Error 3 storage class specified for parameter '_delay_loop_1' c:\program files (x86)\atmel\avr studio 5.0\avr toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/util/delay_basic.h 40 20 Led_Treiber_Kim
4
Error 4 storage class specified for parameter '_delay_loop_2' c:\program files (x86)\atmel\avr studio 5.0\avr toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/util/delay_basic.h 41 20 Led_Treiber_Kim
5
Error 5 expected '=', ',', ';', 'asm' or '__attribute__' before '{' token c:\program files (x86)\atmel\avr studio 5.0\avr toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/util/delay_basic.h 82 1 Led_Treiber_Kim
6
Error 6 expected '=', ',', ';', 'asm' or '__attribute__' before '{' token c:\program files (x86)\atmel\avr studio 5.0\avr toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/util/delay_basic.h 104 1 Led_Treiber_Kim
7
Error 7 storage class specified for parameter '_delay_us' c:\program files (x86)\atmel\avr studio 5.0\avr toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/util/delay.h 83 20 Led_Treiber_Kim
8
Error 8 storage class specified for parameter '_delay_ms' c:\program files (x86)\atmel\avr studio 5.0\avr toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/util/delay.h 84 20 Led_Treiber_Kim
9
Warning 9 #warning "F_CPU not defined for <util/delay.h>" c:\program files (x86)\atmel\avr studio 5.0\avr toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/util/delay.h 89 3 Led_Treiber_Kim
10
Error 10 expected '=', ',', ';', 'asm' or '__attribute__' before '{' token c:\program files (x86)\atmel\avr studio 5.0\avr toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/util/delay.h 133 1 Led_Treiber_Kim
11
Error 11 expected '=', ',', ';', 'asm' or '__attribute__' before '{' token c:\program files (x86)\atmel\avr studio 5.0\avr toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/util/delay.h 210 1 Led_Treiber_Kim
12
Error 12 expected '=', ',', ';', 'asm' or '__attribute__' before '{' token C:\Users\Timm\Documents\AVRStudio\Led_Treiber_Kim\Led_Treiber_Kim\4-Digit-Schiebe.c 6 1 Led_Treiber_Kim
13
Error 13 expected '=', ',', ';', 'asm' or '__attribute__' before '{' token C:\Users\Timm\Documents\AVRStudio\Led_Treiber_Kim\Led_Treiber_Kim\4-Digit-Schiebe.c 16 1 Led_Treiber_Kim
14
Error 14 old-style parameter declarations in prototyped function definition C:\Users\Timm\Documents\AVRStudio\Led_Treiber_Kim\Led_Treiber_Kim\4-Digit-Schiebe.h 25 8 Led_Treiber_Kim
15
Error 15 expected '{' at end of input C:\Users\Timm\Documents\AVRStudio\Led_Treiber_Kim\Led_Treiber_Kim\4-Digit-Schiebe.c 59 1 Led_Treiber_Kim
16
Warning 16 control reaches end of non-void function C:\Users\Timm\Documents\AVRStudio\Led_Treiber_Kim\Led_Treiber_Kim\4-Digit-Schiebe.c 59 1 Led_Treiber_Kim
Was wird das jetzt?
Wer fixt mir alle meine Fehler?
erste Fehlermeldung:
type defaults to 'int' in declaration of 'digit_init'
zugehöriger Code in 4-Digit-Schiebe.h
1
externdigit_init(void);
Frage: Wovon spricht der Compiler hier?
(Was hat jede Funktionsdeklaration (und auch Definition)? Wie siehst sie
aus?
Sie sieht immer so aus
Wo ist bei dir der Datentyp des Returnwertes?
Ein wenig was musst du selber auch dazu tun! Es ist ja schliesslich dein
Projekt. Am Anfang klang das noch so, als ob du die Teile selbst
geschrieben hast. Zumindest bei mir kommen da so die ersten Zweifel auf.
Reihenfolge!
Immer zuerst die System Header und dann deine eigenen.
Deine eigenen werden Dinge aus den System-Header benutzen. Dann müssen
die aber schon vorher mal inkludiert worden sein.