我正在使用C ++代码库,其中包含以下几行代码:
CreateThread(NULL, 0, MyThreadMethod, NULL, 0, NULL);
我想将MyThreadMethod
的值写入调试输出。 (我想这是一个十六进制地址)。
MyThreadMethod
的类型为LPTHREAD_START_ROUTINE
。我已经有一个名为OutputDebugInt
的方法,可以将int
写入调试输出。当我编译行
OutputDebugInt(MyThreadMethod);
然后编译器发出错误
无法将参数1从
unsigned long (__stdcall *)(void *)
转换为int
。
那么有没有办法将LPTHREAD_START_ROUTINE
转换为int
(或其他可以写入调试输出的东西)?
答案 0 :(得分:1)
std::basic_ostringstream<TCHAR> ss;
ss << static_cast<void*>(&MyThreadMethod);
::OutputDebugString(ss.str().c_str());
在32位平台上可以转换为int
,但不能在64位平台上转换为{{1}},所以我坚持创建一个字符串。