Lothar Miller schrieb:
> Schon das könnte einige ins Schleudern bringen ;-)
Ich wollte jetzt schreiben: Aber nur, wenn sie den K&R nicht gelesen
haben, denn Dereferenzieren eines Zeigers mit anschließendem
automatischen Inkrementieren wird schon da ausgiebig genutzt. (Das
hatte seinerzeit auch richtig Sinn: die PDP11 konnte zwei
Adressierungsarten, die genau so gearbeitet haben. Damit wurde dort
u. a. der Stack implementiert, aber da in der PDP11 alles sehr
orthogonal war, konnte man diese Adressierung für alle Register
anwenden. Die entsprechenden C-Darstellungen für *ptr++ und *--ptr
konnten daher 1:1 in die Hardware abgebildet werden.)
Aber: nachdem ich mir das da oben nochmal angeguckt habe, ist mir
schlagartig klar geworden, dass nicht nur der Ausdruck vor dem
Komma, sondern auch das ++ beim OP wirkungslos sind. Damit das
einen Sinn hat, müsste man die Adresse des Zeigers übergeben.
1 | uint32 test(uint8 **aData)
|
2 | {
|
3 | *((*aData)++) = HWREG(I2C1_MASTER_BASE + I2C_O_MDR);
|
4 |
|
5 | return 0;
|
6 | }
|
Aufruf dann mit test(&ptr);.