Hi!
Ist es möglich, dass man in einer Funktion, die einen Parameter vom Typ
void* hat, zu erruieren auf was für einen datentyp der übergebene Zeiger
zeigt?
Als Beispiel: Ich möchte eine Funktion in C schreiben, die mir das Bit
an einer gewissen Stelle zurückgibt - egal welcher Typ, daher größen
unabhängig. Um jetzt aber testen zu können, ob nicht schon außerhalb von
der Variable zugegriffen wird bräuchte ich die genaue Größe.
1 | int setBit(void* var, int pos){
|
2 | //testen ob pos sich in var befindet, dh. ZB bei uint8_t pos < 8
|
3 |
|
4 | }
|
sizeof liefert hier ja immer nur die größe von void* - wie könnte ich je
nach speziellen Typ herrausfinden wie groß der ist? Bei Char[] könnte
ich nach '\0' suchen, aber bei den int-Werten (uint8_t, uint16_t, ...)??