WinAVR kennt Strukturen, habe sie selbst schon benutzt. Man braucht noch nicht mal irgendwelche includes dafür.
Folgender Nonsense-Code funktioniert auf jeden Fall:

Code:
typedef struct {
        unsigned short int ID ;      // 11 Bit-Kennung                         
        unsigned char      RTR ;     // TRUE, wenn remote request              
        unsigned char      LEN ;     // Anzahl der gueltigen Datenbytes (0..8) 
        unsigned char      DATA[8] ; // Datenbytes 0..7                        
} CANMsg;


int main(void)
{
CANMsg msg;

while(1) 
msg.ID ++;

return 0;
}
Ich denke mal, Du hast das typedef vergessen, ohne gehts im WinAVR nicht... So definierst Du also erst mal einen neuen Datentypen, den Du dann auf eine Variable übertragen kannst.

Gruß,
askazo