Цитата(12usver12 @ 28.6.2010, 10:05 ) | работает, получается каждый раз при вызове этой функи выполняется GetProcAddress(GetModuleHandleW(L"ntdll.dll"),"DbgPrint") или оно только раз при инициализации выполняется ? |
Один раз выполнится при инициализации. Только в конструкторах классов надо использовать этот указатель с осторожностью - указатель DbgPrint_ может быть ещё не инициализирован.
Кстати! Есть же ещё функция OutputDebugString:
Код | #include <windows.h> #include <tchar.h>
#ifndef _ARRAYSIZE # define _ARRAYSIZE(x) (sizeof(x)/sizeof(x[0])) #endif
void vDebugPrintf(LPCTSTR lpFmt, va_list v) { TCHAR buf[2048]; _vsntprintf(buf, _ARRAYSIZE(buf), lpFmt, v); buf[_ARRAYSIZE(buf)-1] = _T('\0'); OutputDebugString(buf); }
void DebugPrintf(LPCTSTR lpFmt, ...) { va_list v; va_start(v, lpFmt); vDebugPrintf(lpFmt, v); va_end(v); }
int main() { DebugPrintf(_T("%u\n"), 5555); } |
|