typdef struktur pointer?

OP #3169249
Lesenswert?
• ▲
▼
moin C-Freaks,

ich blicke nicht mehr durch.
Für eine Anwendung auf einem RX Controller von RENESAS gibt es eine 
RENESAS-API, die ich mit dem RENESAS Compiler auch problemlos und 
fehlerlos kompilieren kann. Da jedoch der Compiler nur begrenzt 
verfügbar ist (Begrenzung auf 64k) habe ich den GNU-Compiler verwendet 
und dort tritt mir dann beim Compilieren der obigen API an dieser 
Stelle:

"
/* A pointer to the CAN peripheral registers memory map structure. */
typedef volatile struct st_can __evenaccess * can_st_ptr;
"

folgende Fehlermeldung auf:

"
error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token
"

Kann mir jemand erklären, was beim "tydef..." dort vor sich geht? Ich 
verstehe es so, dass die Struktur von "st_can" auf "__evenaccess" 
kopiert wird, oder ist das auch schon falsch gedacht? Und was passiert 
dann mit "__evenaccess" im Bereich der Pointerzuweisung? Soweit ich 
weiß, hält sich GNU ziemlich an den ANSI Standard - wurde der hier von 
RENESAS vernachlässigt?

Für Erklärungen, die auch ich verstehen kann, wäre ich sehr dankbar.

Rudi
#3169257
Lesenswert?
• ▲
▼
Rudi S. schrieb:
> Kann mir jemand erklären, was beim "tydef..." dort vor sich geht? Ich
> verstehe es so, dass die Struktur von "st_can" auf "__evenaccess"
> kopiert wird, oder ist das auch schon falsch gedacht?

Ja.

Der neu angelegte Typ heißt "can_st_ptr" und ist ein Zeiger auf ein
"volatile struct st_can __evenaccess".

Der Knackpunkt ist das __evenaccess darin. Das stellt wohl eine 
zusätzliche Eigenschaft der Struktur (struct st_can) dar. Bring in 
Erfahrung, was genau das bedeutet (der Name lässt es allerdings schon 
erahnen), und dann musst du das in was entsprechendes für den GCC 
überführen. Oder es stellt sich raus, dass du es für den GCC gar nicht 
brauchst.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.