Hi, mein C ist schon ein wenig eingerostet, und mit der Fehlermeldung des Compiler fang ich leider überhaupt nichts an... Die genaue Fehlermeldung die ich bekomme ist folgende: ../ADC_PWM1.c:87: error: invalid type argument of 'unary *' (have 'int') Mein Code ist (der komplette Code ist im Anhang): #include <avr/io.h> #include <stdint.h> #include <avr/interrupt.h> #define KP 0x02; #define KI_TA 0x02; int main(void) { int8_t Regelabweichung; int8_t Regelwert_8; int8_t Summe_Regelabweichung_8; int32_t Regelwert_32; int16_t Summe_Regelabweichung_16; Regelabweichung = 0; Regelwert_8 = 0; Summe_Regelabweichung_8 = 0; Regelwert_32 = 0; Summe_Regelabweichung_16= 0; while(1) { //[...] Bearbeiten der Variablen Regelwert_32 = KP * Regelabweichung + KI_TA * Summe_Regelabweichung_8; //FEHLER } return 0; } Kann mir jemand sagen was der Compiler Fehler bedeutet und wie ich den Fehler beheben kann?! MfG Tobias
Der gepostete Quellcode hat gar keine 87 (relevanten) Zeilen, sondern nur 30, außerdem ist der auskommentierte Kram gar nicht beendet worden... Tipp: #if 0 ... #endif benutzen statt eines großen Kommentars, um temporär ein Stück Code auszublenden. Dein Fehler wird aber sofort offensichtlich, wenn man den Sourcecode mal einfach durch den Präprozessor schickt:
1 | Regelwert_32 = 0x02; * Regelabweichung + 0x02; * Summe_Regelabweichung_8; |
Als Hausaufgabe bekommst du jetzt herauszufinden, wo die überflüssigen Semikolons herkommen. ;-)
Ah danke, #define ohne ; Die Hausaufgabe war aber einfach :) Aber trotzdem danke!
Wie geht das: "Dein Fehler wird aber sofort offensichtlich, wenn man den Sourcecode mal einfach durch den Präprozessor schickt:" bzw. wo kann ich die Ausgabe des Präprozessors lesen, denk dass kann ich evtl. noch öfter brauchen.
1 | avr-gcc -mmcu=... -E yourfile.c > yourfile.i |
Anfänger_Tobias schrieb:
> Hm, das wird bei mir nicht erzeugt.
Mehr Infos...
-Betriebssystem
-*Genaue* Fehlermeldung
-...
Anfänger_Tobias schrieb:
> Hm, das wird bei mir nicht erzeugt.
Mehr Infos...
- Betriebssystem
- Genaue Fehlermeldung
- Genauer Aufruf
- ...
Hi, das Problem mit der Fehlermeldung ist bereits behoben, es geht darum, dass ich gern die Präprozessordatei erzeugen möchte. MfG Tobias
Anfänger_Tobias schrieb: > das Problem mit der Fehlermeldung ist bereits behoben, es geht darum, > dass ich gern die Präprozessordatei erzeugen möchte. Habe ich mitbekommen. ;-) Du hast aber geschrieben, dass das nicht funktioniert, ohne den Aufruf und der Fehlermeldung wird man dir nur schwer helfen können. Das Betriebssystem könnte ebenfalls hilfreich sein. Darum habe ich ja auch folgendes zitiert: Anfänger_Tobias schrieb: > Hm, das wird bei mir nicht erzeugt. ;-)
Anfänger_Tobias schrieb: > das Problem mit der Fehlermeldung ist bereits behoben, es geht darum, > dass ich gern die Präprozessordatei erzeugen möchte. Dessen Ausgabe bekommst Du wie schon beschrieben mit '-E' (gcc, ..wer noch?), Details liefert wie immer das RTFM [1] (behelfsweise das STFW [2]). Beim gcc wird dass dann - wie schon beschrieben - z.B. zu
1 | $ gcc -Wall -E file.c | less |
alternativ
1 | $ avr-gcc -Wall -mmcu=$blubber -E file.c | less |
:-) HTH und HF [1] aus der Man-page zu gcc:
1 | -E Stop after the preprocessing stage; do not run the compiler proper. |
2 | The output is in the form of preprocessed source code, which is |
3 | sent to the standard output. |
[2] http://www.google.de/search?hl=de&q=gcc+preprocessor+output&btnG=Suche&meta=
Anfänger_Tobias schrieb:
> Hm, das wird bei mir nicht erzeugt.
Das must du erzeugen. Mit der Hand. Ja, tippen, auf der
Kommandozeile (unter Windows liebevoll "DOS-Fenster" genannt, obwohl
das mit MS-DOS schon seit Jahren nichts mehr zu tun hat).
Nix klickibunti. ;-)
Ok, also bisher versteh ich nur Bahnhof, aber ich werd mir das Morgen noch mal genau anschauen. Soweit Danke
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.