Forum: Compiler & IDEs 'unary *'


von roty (Gast)


Lesenswert?

Eine dumme Frage eines absoluten GNU Neulings.

Was bedeutet bitte beim GCC

  error: invalid type argument of 'unary *'

Das kenne ich von meinem bisherigen Compiler nicht. Er compiliert das
ohne zu meckern.

Hier die Zusammenhänge die den Fehler verursachen.
....
 #define PCB_PINSEL0     (*(REG32 (0xE002C000)))
....
 PCB_PINSEL0=0xB0C51505;   // hier wird Fehler gemeldet.

Danke

von -daniel- (Gast)


Lesenswert?

unary operator ist doch ein operator mit einem operand
in dem Fall ist Operand ein Zeiger

int i = 0, * p = &i;
//
*p = 1;  // hier Operator angewendet

was ich mir in deinem Fall vorstellen kann ist, dass
Compiler es nicht mag wenn du ihm anstelle vom Zeiger
eine Konstante gibst. Und was macht REG32 makro?

von roty (Gast)


Lesenswert?

Danke für deine Mühe mir das zu erklären.

#define REG32 (volatile unsigned int*)

Hatte ich vergessen mitzuliefern.

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


Lesenswert?

Müsste eigentlich compilieren.

Schicke das Ganze mal nur durch den Präprozessor: alle normalen
Compileroptionen (insbesondere alle -D, -U und -I-Optionen, die
du sonst auch nimmst), aber statt des -c nimmst du ein -E, und
hinter -o gibst du einen Ausgabedateinamen an, der per Konvention
auf .i (preprocessed C source) enden sollte.

Dann pick mal die Stelle raus und sieh sie dir genau an.  Wenn
du's nicht selbst erkennen kannst, poste die entsprechende
Zeile hier.

von roty (Gast)


Lesenswert?

Habe die Ursache gefunden. Die REG32 Definition war dummerweise
in einem falschen def Zweig und nicht aktiv. Dummer Fehler, aber
es ist mein allererste Projekt mit GNUARM und die Fehlermeldungen
sind mir noch völlig ungeläufig.

Ich bedanke mich bei euch für die Unterstützung.

Grüße

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.