mikrocontroller.net

Forum: Compiler & IDEs Error: invalid type argument of 'unary *' (have 'int')


Autor: Anfänger_Tobias (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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:
  Regelwert_32 = 0x02; * Regelabweichung + 0x02; * Summe_Regelabweichung_8;

Als Hausaufgabe bekommst du jetzt herauszufinden, wo die
überflüssigen Semikolons herkommen. ;-)

Autor: Anfänger_Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah danke, #define ohne ;
Die Hausaufgabe war aber einfach :) Aber trotzdem danke!

Autor: Anfänger_Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
avr-gcc -mmcu=... -E yourfile.c > yourfile.i

Autor: Anfänger_Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm, das wird bei mir nicht erzeugt.

Autor: Link zu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Anfänger_Tobias schrieb:
> Hm, das wird bei mir nicht erzeugt.
Mehr Infos...
-Betriebssystem
-*Genaue* Fehlermeldung
-...

Autor: Link zu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Anfänger_Tobias schrieb:
> Hm, das wird bei mir nicht erzeugt.
Mehr Infos...
- Betriebssystem
- Genaue Fehlermeldung
- Genauer Aufruf
- ...

Autor: Anfänger_Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
das Problem mit der Fehlermeldung ist bereits behoben, es geht darum, 
dass ich gern die Präprozessordatei erzeugen möchte.

MfG
Tobias

Autor: Link zu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

;-)

Autor: g457 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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
$ gcc -Wall -E file.c | less
alternativ
$ avr-gcc -Wall -mmcu=$blubber -E file.c | less
:-)

HTH und HF

[1] aus der Man-page zu gcc:
-E  Stop after the preprocessing stage; do not run the compiler proper.
    The output is in the form of preprocessed source code, which is
    sent to the standard output.
[2] 
http://www.google.de/search?hl=de&q=gcc+preprocess...

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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. ;-)

Autor: Anfänger_Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok,
also bisher versteh ich nur Bahnhof, aber ich werd mir das Morgen noch 
mal genau anschauen.
Soweit Danke

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.