Принимая это из MSDN:
BOOL WINAPI DebugSetProcessKillOnExit(__in BOOL KillOnExit);
Вы можете объявить указатель функции как:
BOOL (*fDebugSetProcessKillOnExit)(BOOL) = /* ... */;
или ослабьте глаза, используя typedef
:
typedef BOOL (*DebugKillPtr)(BOOL);
DebugKillPtr fDebugSetProcessKillOnExit = /* ... */;
Указатели на функции могут несколько запутывать, Руководство InformIT по ним должно помочь с этим.
Кроме того, вы используете сборку Unicode. Вы можете использовать GetModuleHandle(L"Kernel32.dll")
или _T()
и т. Д. Или настроить свой проект на использование многобайтового набора символов (свойства проекта -> конфигурация -> общие -> набор символов) .
Набор символов Unicode также является причиной, по которой оператор atoi()
не может работать:
argv
- это массив _TCHAR*
с, а _TCHAR
- это wchar_t
для юникод-сборок. atoi()
однако ожидает аргумент const char*
, а вы передаете его wchar_t*
.
Таким образом, вы можете снова использовать многобайтовый набор символов, преобразовать строку или использовать Microsoft _wtoi()
/ _ttoi()
.
Чтобы облегчить переключение между наборами символов и придерживаться стиля книги, предпочтите версии _T*
и _t*
.