小编Ken*_* R.的帖子

在C中使用void*代替重载?

我的问题是我在多线程应用程序中看到了这样的代码:

void Thread( void* pParams )
{  
    int *milliseconds = (int *)pParams;
    Sleep(milliseconds);
    printf("Finished after %d milliseconds", milliseconds); //or something like that
}
Run Code Online (Sandbox Code Playgroud)

这大大引起了我的兴趣,我知道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');
Run Code Online (Sandbox Code Playgroud)

我可能完全错了,即使这确实有效也是可怕的做法?谢谢.

c function void-pointers

3
推荐指数
2
解决办法
1043
查看次数

标签 统计

c ×1

function ×1

void-pointers ×1