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


von Anfänger_Tobias (Gast)


Angehängte Dateien:

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

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


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

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

von Anfänger_Tobias (Gast)


Lesenswert?

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

von Anfänger_Tobias (Gast)


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.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

1
avr-gcc -mmcu=... -E yourfile.c > yourfile.i

von Anfänger_Tobias (Gast)


Lesenswert?

Hm, das wird bei mir nicht erzeugt.

von Link zu (Gast)


Lesenswert?

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

von Link zu (Gast)


Lesenswert?

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

von Anfänger_Tobias (Gast)


Lesenswert?

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

MfG
Tobias

von Link zu (Gast)


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.

;-)

von g457 (Gast)


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
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=

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


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. ;-)

von Anfänger_Tobias (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.