2011-04-15 33 views
0

我正在與其中包含像下面一些線C++代碼庫工作:LPTHREAD_START_ROUTINE轉換到int

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

我想寫入的MyThreadMethod調試輸出的值。 (我想這是一個十六進制地址)。 MyThreadMethod的類型爲LPTHREAD_START_ROUTINE。我已經有了一個名爲OutputDebugInt的方法,它可以編寫一個int來調試輸出。當我編譯行

OutputDebugInt(MyThreadMethod); 

則編譯器會發出錯誤

不能從unsigned long (__stdcall *)(void *)轉換參數1至int

那麼,有沒有辦法轉換LPTHREAD_START_ROUTINEint(或別的東西,它可以寫入調試輸出)?

回答

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

轉換爲int有可能在32位平臺上,而不是64位平臺,所以我與創建一個字符串,而不是堅持。