PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : struct - Befehl gehr nicht ???



MoaGandi
21.12.2005, 17:38
Hallo alle zusammen!

Hab grad versucht ne Struktur mit struct{}; in C mit WinAVR zu programmieren. Aber bei meiner ersten Instanz der Struktur bezeichnet er sie immer als 'undeclared'. In allen C-Beschreibungen die ich habe existiert struct. In meinem C-Buch nutzen die aber die Headerfiles stdio.h und conio.h. Conio gibst in WinAvr garnicht. Liegt des an den Headerfiles oder gibts bei WinAVR generell keine Strukturen?

Schon mal Danke für Eure Antworten im Voraus.

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


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

PicNick
21.12.2005, 19:26
typedef muß nicht sein, da hat's was anderes: Herzeigen !

askazo
22.12.2005, 09:20
Uups, da war ich etwas voreilig. Hatte noch einen Fehler im Code, als ich's ohne typedef probiert hatte.
Es geht also auch ohne typedef problemlos:

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)
{
while(1)
CANMsg.ID ++;

return 0;
}
Dann stimme ich PicNick mal zu: Code herzeigen!