Linked List - nicht kompilierbar

Gast #2238465
Lesenswert?

Hallo!

Ich habe gerade eine Linked List geschrieben, die mir Kopfzerbrechen 
bereitet.

die liste:
-------------------------------------------------------------
typedef struct DISP_MESSAGE disp_message;

struct DISP_MESSAGE
{
   uint8_t type;
  uint8_t len;
  uint8_t data[128];
  disp_message* next;
};
--------------------------------------------------------------

und der pointer dazu:

disp_message* DispMessageSendBuffer;

Nun versuche ich darauf zuzugreifen:

if((*DispMessageSendBuffer).type == DISP_CMD)

der compiler (µVision4) gibt mir bei dieser zeile folgende fehlermeldung 
aus:

Programm\display.c(151): error:  #18: expected a ")"

Könnt ihr mir sagen ob ich etwas übersehe/etwas ich falsch mache?

Laut meinen C-Kenntnissen sollte sich das problemlos kompilieren 
lassen...

Target ist CortexM3 ( STM32F103 )

Grüße, Erik
Gast #2238504
Lesenswert?

typedef struct DISP_MESSAGE
 {
    uint8_t type;
   uint8_t len;
   uint8_t data[128];
   struct DISP_MESSAGE *next;
 }disp_message;

Versuchs mal damit. typedef und struct sind hier nur der Bequemlichkeit 
halber zusammengezogen.
Gast #2238530
Lesenswert?

Ich hab die Fragmente mal zusammenkopiert, bisschen Gluecode drumrum, 
und es kompiliert astrein (mit Visual Studio 2008). Würde sagen, der 
Fehler steckt in den Zeilen, die du noch nicht gezeigt hast.

Was steht knapp oberhalb von dieser Zeile?
> if((*DispMessageSendBuffer).type == DISP_CMD)

Und wie ist DISP_CMD definiert?

erik schrieb:
> if((*DispMessageSendBuffer).type == DISP_CMD)

Die Syntax ist nicht falsch, aber ungewöhnlich. Gebräuchlicher ist das 
hier:
if(DispMessageSendBuffer->type == DISP_CMD)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren