www.mikrocontroller.net

Forum: Compiler & IDEs 'unary *'


Autor: roty (Gast)
Datum:

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

Autor: -daniel- (Gast)
Datum:

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

Autor: roty (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für deine Mühe mir das zu erklären.

#define REG32 (volatile unsigned int*)

Hatte ich vergessen mitzuliefern.

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

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

Autor: roty (Gast)
Datum:

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

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.