我的问题是我在多线程应用程序中看到过这样的代码:
void Thread( void* pParams )
{
int *milliseconds = (int *)pParams;
Sleep(milliseconds);
printf("Finished after %d milliseconds", milliseconds); //or something like that
}
这极大地引起了我的兴趣,我知道malloc
发回一个 void 指针,你可以将它转换为你想要的,这是否意味着我可以创建一个可以接受任何数据类型的函数?
例如我写的一个没有测试的函数:
void myfunc( void* param )
{
switch(sizeof(param)) {
case 1:
char *foo = (char *)param; break;
case 2:
short *foo = (short *)param; break;
case 4:
int *foo = (int *)param; break;
}
}
myfunc(3.1415);
myfunc(0);
myfunc('a');
我可能完全错了,即使这确实有效,这是可怕的做法吗?谢谢。