将LPTHREAD_START_ROUTINE转换为int

时间:2011-04-15 13:04:46

标签: c++ windows

我正在使用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(或其他可以写入调试输出的东西)?

1 个答案:

答案 0 :(得分:1)

std::basic_ostringstream<TCHAR> ss;
ss << static_cast<void*>(&MyThreadMethod);
::OutputDebugString(ss.str().c_str());

在32位平台上可以转换为int,但不能在64位平台上转换为{{1}},所以我坚持创建一个字符串。