Hallo, eine kurze Frage an die Experten: Ich habe eine Interrupt Routine die ein struct verändert: typedef struct { volatile uint8_t trid; // Tx, RX id volatile uint8_t arq_cnt; // command or response volatile uint8_t length; // packet length volatile uint16_t crc; // 16-bi crc checksum uint8_t volatile *data; // pointer to the main data } modem_frame; Frage: Reicht es, wenn ich die die struct variable selber als volatile deklariere, oder muss ich - wie oben gemacht - alle Elemente des struct's zusätzlich als volatile declarieren? Oder muss ich die einzelnen Elemente des struct's als volatile deklarieren und die Deklaration der Variable modem_frame braucht nicht mehr als volatile deklariert werden? Oder beides zusammen, also so: modem_frame volatile *rx_frame;
Also ich hab nur die Struktur selbst als volatile gekennzeichnet, die Elemente müsstens dann automatisch auch sein, deswegen haste n struct genommen ;)
Danke, Lösung ist also: Finally, if you apply volatile to a struct or union, the entire contents of the struct/union are volatile. If you don't want this behavior, you can apply the volatile qualifier to the individual members of the struct/union.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.