2011-04-15 5 views
0

Je travaille avec une base de code C++ qui contient quelques lignes comme les suivantes:Conversion LPTHREAD_START_ROUTINE à int

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

Je voudrais écrire la valeur de MyThreadMethod à la sortie de débogage. (Je suppose que c'est une adresse hexadécimale). MyThreadMethod a le type LPTHREAD_START_ROUTINE. J'ai déjà une méthode appelée OutputDebugInt qui peut écrire une sortie int pour déboguer. Quand je compile la ligne

OutputDebugInt(MyThreadMethod); 

le compilateur émet l'erreur

ne peut pas convertir le paramètre 1 de unsigned long (__stdcall *)(void *) à int.

Ainsi est-il un moyen de convertir LPTHREAD_START_ROUTINE à int (ou autre chose qui peut être écrit à la sortie de débogage)?

Répondre

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

Conversion en int est possible sur les plates-formes 32 bits, mais pas les plates-formes 64 bits, donc je bâton avec la création d'une chaîne à la place.