Ho iniziato a sentirmi a mio agio con C e poi mi sono imbattuto in tipo casting. Se Ho il seguente definito in un file .h *Lanciare un puntatore del vuoto a una struttura
struct data {
int value;
char *label;
};
e questo in un altro file .h *
# define TYPE void*
Come faccio il cast del puntatore nullo alla struct in modo che posso utilizzare un variabile "TYPE val" che è passato in funzioni? Ad esempio, se voglio utilizzare il valore a cui punta TYPE, come posso lanciarlo in modo che possa passare quel valore a un'altra funzione?
'#define TYPE void *' è una cattiva idea. Almeno dovrebbe essere un 'typedef' invece. Considera cosa succederebbe nella seguente dichiarazione: 'TYPE x, y;' o 'const TYPE x;'. – jamesdlin
Inoltre, se hai a che fare con i puntatori 'void *' e C, non devi fare alcun casting esplicito. C permette ai puntatori di 'void *' di essere * implicitamente * cast: 'void * p = ...; struct data * val = p; '. – jamesdlin
@jamesdlin Sono d'accordo che è una cattiva idea, ma non è una mia idea, quindi devo andare con esso. Quindi insieme a quello, quando 'TYPE val' è passato in una funzione come puntatore void, posso semplicemente dichiarare' struct data * temp = val; 'quindi passare temp a una funzione e dovrei essere in grado di usare temp-> valore? – user1852050