我正在进行线程处理,但我不知道如何打印出指针值。
UINT __cdecl CThreadDlg::func(LPVOID pParam)
{
data *ptr = (data*)pParam;
AfxMessageBox(L"You have entered a thread function.");
ptr->a = "abc12345"; // char * a
AfxMessageBox(???); // what should i put here to print out the value of a?
return 0;
}
答案 0 :(得分:3)
也许是这样的:
CString a;
a.Format(_T("%p"), ptr->a);
AfxMessageBox(a);
编辑: 得到价值'ptr-> a'指向:
a.Format(_T("%s), ptr->a);
答案 1 :(得分:1)
我相信
ptr->a
但这完全取决于AfxMessageBox API。
编辑:看起来AfxMessageBox需要一个LPCTSTR,它只是一个const char *。
LPCTSTR lpStr = (LPCTSTR)ptr->a;
如果您的编译器没有自动投射,这应该会有所帮助
答案 2 :(得分:1)
使用swprintf函数构建带有文本的C字符串,然后打印出来。考虑这个例子:
UINT __cdecl CThreadDlg::func(LPVOID pParam)
{
data *ptr = (data*)pParam;
AfxMessageBox(L"You have entered a thread function.");
ptr->a = "abc12345"; // char * a
wchar_t buf[ 1024 ];
swprintf( buf, "ptr->a points to %p", ptr->a );
AfxMessageBox(buf);
return 0;
}