ここでの私の質問は、マルチスレッドアプリケーションで次のようなコードを見たことがあるということです。
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');
私は完全に間違っているかもしれませんが、これがうまくいくとしても、それは恐ろしい練習ですか?ありがとう。