Hallo,
ich habe eine Funktion geschrieben die einen Pointer und eine ID
zurückgeben soll.
Die ID wird per Return zurück gegeben. Um ebenfalls den Pointer
zurückzugeben, muss ich also die Adresse eines Pointers mit übergeben.
Also sieht der Funktionsprototyp etwa so aus:
1 | some_id function(int bla, int blub, void **);
|
Ich möchte die Funktion gerne mit beliebigen Pointern aufrufen können
ohne einen Cast zu machen.
Also zum beispiel soll etwas wie:
1 | uint32_t *ptr;
|
2 | function(4, 5, &ptr);
|
sowie:
1 | double *d_ptr;
|
2 | function(6, 7, &d_ptr);
|
Ohne compiler Warnung und Cast ablaufen können.
void ** scheint also die falsche Wahl zu sein. Wenn es sich vermeiden
lässt ohne Macro Warnsinn :)
"function" wird durch eine Initialisierungsfunktion darüber informiert
wie sie mit dem Pointern umzugehen hat. Und es kann immer mehrer
instancen mit verschiedenen Typen geben.
Deshalb muss die Funktion ihren ** Typ unabhängig entgegen nehmen.
Grüße und danke
Felix