将LPTHREAD_START_ROUTINE转换为int

Converting LPTHREAD_START_ROUTINE to int

本文关键字:int 转换 START LPTHREAD ROUTINE      更新时间:2023-10-16

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

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

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