这个WINAPI线程回调:
DWORD WINAPI dont_thread_on_me(LPVOID context) {
int value = *((int *)context);
return ERROR_SUCCESS;
}具体而言,这条线:
int value = *((int *)context);很管用。但是*((int *)context)是各种各样的下流者。有更好的方式写吗?
发布于 2013-09-25 16:32:58
int value = *reinterpret_cast<int *>(context);如果需要的话,你真的不能回避这样一个事实。
发布于 2013-09-25 16:32:57
您可以使用reinterpret_cast
int value = *reinterpret_cast<int *>(context);发布于 2013-09-25 16:35:57
编译器必须知道如何对待context。因此,您必须告诉编译器使用强制转换,它指向一个int。您可以使用宏来隐藏它,如
#define read_as_int(p) *(reinterpret_cast<int*>(p))
int value = read_as_int(context);但是,这并没有提高代码的可读性,也没有提高输入代码的努力。C++纯粹主义者可能更喜欢内联函数:
int inline read_as_function(void*p)
{
return *(reinterpret_cast<int*>(p));
}https://stackoverflow.com/questions/19010436
复制相似问题