I have a “generic” linked link in C that takes void * data to store the data in a Node.
insertNode(linkedList * list, void *data);
//Storing/retrieving a string works fine;
char *str="test";
insertNode(list, str);
char *getback=(char *)node->data;
//Storing/retrieving an Int results a cast warning
int num=1;
insertNode(list,(void *)num);
int getback=(int)node->data;
This is because int is 32 bit, but void * is 64 bit on x64 machine. What is the best practice to get rid of this error?
Use
intptr_toruintptr_t. They are integers of the same size as a pointer:Of course, the maximum value that you can store depends on the system, but you can examine it at compile time via
INTPTR_MINandINTPTR_MAX.