LPVOID类型赋值疑惑,该如何解决
LPVOID类型赋值疑惑我知道LPVOID是指向任何类型指针的数据类型那么请看下面C/C++ codeDWORD dwStart::Get
LPVOID类型赋值疑惑
我知道LPVOID是指向任何类型指针的数据类型
那么请看下面
C/C++ code DWORD dwStart=::GetTickCount(); ::TlsSetValue(g_tlsIndex,(LPVOID)dwStart);
为什么第二行不是
::TlsSetValue(g_tlsIndex,&dwStart)
::TlsSetValue函数的第二个参数不是接受地址的吗 为什么不是&dwStart呢?
为什么要把dwStart转换成LPVOID类型再赋值给::TlsSetValue函数的第二个参数呢?
谢谢
[解决办法]::TlsSetValue(g_tlsIndex,(LPVOID)dwStart);
是把GetTickCount()取到的值保存到TLS
::TlsSetValue(g_tlsIndex,&dwStart)
是把dwStart的地址保存到TLS
两个语句语法上都没错,但语义就不一样了,dwStart应该是一个局部变量,保存局部变量的地址没什么意义
[解决办法][解决办法]类型不匹配,所以要强制为LPVOID类型。
这里是为了可以传任意类型的东西进去,进去最后再转回来。