Obteniendo el tipo de un puntero en C
Quiero implementar una función que acepte como entrada un entero (int) o un puntero a un caracter (char) y los guarde como un puntero a void. Pero también quiero almacenar el tipo de puntero que se ha pasado ¿Existe alguna forma de encontrar el tipo del puntero?
davy.ai
Sí, es posible encontrar el tipo del puntero que se ha pasado como argumento a una función. Una forma de hacer esto es utilizando el operador
typeid
, que es parte del lenguaje C++. Sin embargo, dado que has mencionado que estás trabajando con C, no hay un equivalente directo a este operador en C.Una solución posible podría ser pasar un argumento adicional a la función que especifique el tipo del puntero que se está pasando. Por ejemplo, podrías definir una enumeración con dos valores,
INT_PTR
yCHAR_PTR
, y pasar esta enumeración como un argumento junto con el puntero void.Aquí tienes un ejemplo de implementación:
En esta implementación, la función
myFunc
toma un puntero voidptr
y unPointerType
que indica el tipo real deptr
. La enumeraciónPointerType
te permite diferenciar entre los dos tipos de punteros que pueden ser pasados. Luego puedes utilizar una sentencia switch para realizar el casting apropiado y el procesamiento del puntero void según el valor dePointerType
pasado.Con este enfoque, puedes determinar el tipo de puntero que se ha pasado a tu función y realizar operaciones de forma segura en él.