Ich suche Hilfe zu typedef struct mit pointer

Hallo,

also wie ihr bereits aus dem Titel heraus gelesen habt, brauch ich hilfe zu typedef struct und wie ich den pointer dazu schreibe. Dazu möchte ich folgenden Code benutzen:

typedef struct
{
DWORD ID; // 11/29 bit code
BYTE MSGTYPE; // bits of MSGTYPE_*
BYTE LEN; // count of data bytes (0…8)
BYTE DATA[8]; // data bytes, up to 8
} TPCANMsg; // for PCAN_WRITE_MSG

typedef struct
{
TPCANMsg Msg; // the above message
DWORD dwTime; // a timestamp in msec, read only
WORD wUsec; // remainder in micro-seconds
} TPCANRdMsg; // for PCAN_READ_MSG

void print_message(TPCANMsg *m)
{
int i;

// print RTR, 11 or 29, CAN-Id and datalength
printf("receivetest: %c %c 0x%08x %1d ",
(m->MSGTYPE & MSGTYPE_RTR) ? ‚r‘ : ‚m‘,
(m->MSGTYPE & MSGTYPE_EXTENDED) ? ‚e‘ : ‚s‘,
m->ID,
m->LEN);

// don’t print any telegram contents for remote frames
if (!(m->MSGTYPE & MSGTYPE_RTR))
for (i = 0; i LEN; i++)
printf("0x%02x ", m->DATA[i]);

printf("\n");
}

So jetzt zu meinen Problem: Wie schreib ich den Pointer wenn ich die Daten über TPCANRdMsg auslesen möchte?

Lösungsvorschlag meinerseits, der leider nicht funktioniert:

rintf("receivetest: %c %c 0x%08x %1d ",
(m->Msg->MSGTYPE & MSGTYPE_RTR) ? ‚r‘ : ‚m‘,
(m->Msg->MSGTYPE & MSGTYPE_EXTENDED) ? ‚e‘ : ‚s‘,
m->Msg->ID,
m->Msg->LEN);

Mit freundlichen Grüßen

Darius

Hallo Darius !

Wenn es so definiert ist:

typedef struct
{
 TPCANMsg Msg; // the above message
 DWORD dwTime; // a timestamp in msec, read only
 WORD wUsec; // remainder in micro-seconds
} TPCANRdMsg; // for PCAN\_READ\_MSG

geht der Zugriff so:

 m-\>Msg.MSGTYPE

weil (m->Msg) eine Struktur ist und nicht ein Pointer auf eine Struktur.

Wenn es dagegen so definiert wäre:

typedef struct
{
 TPCANMsg \*Msg; // pointer to above message
 DWORD dwTime; // a timestamp in msec, read only
 WORD wUsec; // remainder in micro-seconds
} TPCANRdMsg; // for PCAN\_READ\_MSG

ginge der Zugriff so:

 m-\>Msg-\>MSGTYPE

weil (m->Msg) jetzt ein Pointer auf eine Struktur ist.

mfg
Christof

Herzlichen Dank!

Hab das jetzt passend geschrieben und es hat auch auf anhieb funktioniert!

Gruß

Darius