Gast
#180658
Hallo,
Ich habe gerade massive Probleme mit dem sizeof Operator. Ich vermute
mal wieder das übliche Brett vorm Kopf, aber irgendwie bekomme ich
nicht weiter.
Ich habe mehrere Objekte gleichen Typs hintereinander im Speicher. IM
Prinzip wie ein Array, nur das ich die Länge nicht kenne. Also gibt es
zu jeder Liste ein Abschlusselement das ich erkennen kann. Prinzipiell
gehe ich also so durch die Liste )element ist ein Zeiger auf einen
struct vom Typ elementType)
while (element != NULL) {
machwas_mit(element);
element+=sizeof(struct elemtType);
}
Ich wunder mich schon die ganze Zeit warum er Einträge zu
"überspringen" scheint bis ich folgendes versucht habe:
PORTC=sizeof(struct rePARTSTransition);
currentList=currentList+sizeof(struct rePARTSTransition);
Die Zeilen stehen so direkt hintereinander im Source. Der Assembler
dazu sagt:
---- d:\atmel\reparts\fsm.c
-----------------------------------------------------------------------
34: PORTC=sizeof(struct rePARTSTransition);
+0000024C: E083 LDI R24,0x03 Load immediate
---- No Source
------------------------------------------------------------------------
------------
+0000024D: BB85 OUT 0x15,R24 Out to I/O location
---- d:\atmel\reparts\fsm.c
-----------------------------------------------------------------------
35: currentList=currentList+sizeof(struct rePARTSTransition);
+0000024E: 9639 ADIW R30,0x09 Add immediate to
word
Warum addiert er beim 2. mal 9? 3 wäre richtig, oder sagen wir mal 3
erwarte ich.
Hilfe!
MfG
Sebastian