Преобразование LPTHREAD_START_ROUTINE в int - PullRequest
0 голосов
/ 15 апреля 2011

Я работаю с базой кода 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 Ответ

1 голос
/ 15 апреля 2011
std::basic_ostringstream<TCHAR> ss;
ss << static_cast<void*>(&MyThreadMethod);
::OutputDebugString(ss.str().c_str());

Преобразование в int возможно на 32-битных платформах, но не на 64-битных платформах, поэтому вместо этого я бы остановился на создании строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...