SeeksTheMoon
15-01-2007, 11:22
Ich habe hier ein C-Programm vorliegen, das folgendes Konstrukt verwendet:
#define FetchLE32(p) (*((unsigned int*)(p))++)
...
void funktion (int index, unsigned char* start) {
unsigned char* bp;
bp=start+index*8;
offset=FetchLE32(bp);
...
}
Der gcc meckert diese Stelle offset=FetchLE32(bp); an:
"Fehler: Ungültiger L-Wert in Erhöhung"
(bzw. auf englisch, wem das mehr hilft: "error: invalid lvalue in increment")
Ich habe keine Ahnung warum und habe mal folgendes nachgebaut:
#define FetchLE32(p) (*((unsigned int*)(p))++)
int main() {
unsigned int* ptr = (unsigned int*)7;
(*((unsigned int*)(ptr))++);
//FetchLE32(7);
}
Die auskommentierte Zeile macht doch genau das, was die beiden Zeilen darüber machen, aber sobald ich die Kommentare wegnehme, kommt auch hier die Fehlermeldung von oben, während die beiden ersten Zeilen in der main problemlos durchgehen.
Kapier ich jetzt nicht...:(
#define FetchLE32(p) (*((unsigned int*)(p))++)
...
void funktion (int index, unsigned char* start) {
unsigned char* bp;
bp=start+index*8;
offset=FetchLE32(bp);
...
}
Der gcc meckert diese Stelle offset=FetchLE32(bp); an:
"Fehler: Ungültiger L-Wert in Erhöhung"
(bzw. auf englisch, wem das mehr hilft: "error: invalid lvalue in increment")
Ich habe keine Ahnung warum und habe mal folgendes nachgebaut:
#define FetchLE32(p) (*((unsigned int*)(p))++)
int main() {
unsigned int* ptr = (unsigned int*)7;
(*((unsigned int*)(ptr))++);
//FetchLE32(7);
}
Die auskommentierte Zeile macht doch genau das, was die beiden Zeilen darüber machen, aber sobald ich die Kommentare wegnehme, kommt auch hier die Fehlermeldung von oben, während die beiden ersten Zeilen in der main problemlos durchgehen.
Kapier ich jetzt nicht...:(