标签:原因 强制转换 转换 for rdp span 丢失 this cst
1、src/common/public.h
uint32_t lpParameter 改为 void* lpParameter;
2、SocksMgr.cpp
DWORD WINAPI CSocksMgr::ForwardProc(void* lpParameter) { // int s = int (lpParameter); ... }
编译不过去。因为在 64位平台下,void*向 int转换会丢失精度。
DWORD WINAPI CSocksMgr::ForwardProc(void* lpParameter) { intptr_t s = intptr_t(lpParameter); ... }
作者在这里做强制转换的原因是:传递的参数 lpParameter,最原始由线程创建时当参数传入,受接口限制,只能传入指针类型。实际这个参数是一个socket句柄。是个 int。
还有个将 this指针强制转换为 uint32_t的。
bool CSocksMgr::Begin( LPCSTR ip, int port ) { ...... proxy->lpParameter = this; ...... }
标签:原因 强制转换 转换 for rdp span 丢失 this cst
原文地址:http://www.cnblogs.com/diylab/p/6021492.html