Ich habe hier einige Funktionen, die unterschiedliche Datentypen aus
einen Puffer extrahieren. Damit ein Folgeaufruf einer solchen Funktion
an der richtigen Stelle des Puffers ausliest, wird der Pointer um die
Groesse des Datentyps inkrementiert.
1 | void BufferReadWord(unsigned int *uwData, unsigned char **ucBuffer)
|
2 | {
|
3 | *( (unsigned char*) &(*uwData)) = **ucBuffer;
|
4 | (*ucBuffer)++;
|
5 | *(((unsigned char*) &(*uwData)) + 1) = **ucBuffer;
|
6 | (*ucBuffer)++;
|
7 | }
|
8 |
|
9 | unsigned char * pucFlashSeeker;
|
10 | unsigned int config;
|
11 | unsigned long setup;
|
12 |
|
13 | BufferReadWord ( &config, &pucFlashSeeker);
|
14 | BufferReadDWord( &setup, &pucFlashSeeker);
|
Das Inkrementieren des Pointers klappt. Leider wird der Wert nicht
korrekt extrahiert.
1 | *( (unsigned char*) &(*uwData)) = **ucBuffer;
|
Ich habe bereits diverse Konstruktionen versucht. Wie komme ich an den
Wert, auf den der an die Funktion uebergebene Pointer zeigt?