c ++ - Konvertere LPTHREAD\_START\_ROUTINE til int

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg arbejder med en C ++-kodebase, som indeholder nogle linjer som følgende:


CreateThread(NULL, 0, MyThreadMethod, NULL, 0, NULL); 


Jeg vil gerne skrive værdien af ​​MyThreadMethod for at debug output. (Jeg antager, at det er en hexadecimal adresse).
MyThreadMethod har typen LPTHREAD\_START\_ROUTINE. Jeg har allerede en metode kaldet OutputDebugInt, som kan skrive en int til debug output. Når jeg skal kompilere linjen


OutputDebugInt(MyThreadMethod);


så udgiver kompilatoren fejlen



  kan ikke konvertere parameter 1 fra unsigned long (\_\_stdcall *)(void *) til int.



Så er der en måde at konvertere LPTHREAD\_START\_ROUTINE til int (eller noget andet der kan skrives til debug output)?

Bedste reference


std::basic\_ostringstream<TCHAR> ss;
ss << static\_cast<void*>(&MyThreadMethod);
::OutputDebugString(ss.str().c\_str());


Konvertering til int er mulig på 32-bit platforme, men ikke 64-bit platforme, så jeg holder fast ved at oprette en streng i stedet.