Невозможно назначить параметр lpCmdLine указателю char*
Эта проверка кода запускает приложение следующим параметром:
INT APIENTRY _tWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPTSTR lpCmdLine, INT iShow)
{
char* szCmdLine = lpCmdLine;
...
}
Ошибка в этой строке: ошибка C2440: "инициализация" не может преобразовать из "LPTSTR" в "char *"
1 ответ
Это потому что LPTSTR
может быть LPSTR
или же LPWSTR
с учетом настроек проекта UNICODE. Когда юникод включен, использование приложения LPWSTR
, если не LPSTR
,
LPSTR
это просто псевдоним для char*
, LPWSTR
- wchar_t*
, T
в LPTSTR
имею в виду TCHAR
тип, какое определение может быть char
или же wchar_t
без разницы UNICODE
или же _UNICODE
символ определяется в вашем проекте.
LP
означает "длинный указатель", long - это 32-битный адрес памяти. STR
строка
Итак, давайте опишем LPSTR
- "длинный указатель на строку ANSI"; LPWSTR
- "длинный указатель на строку широких символов" и LPTSTR
длинный указатель на TCHAR
Строка".
к W
или же T
письмо может быть добавлено префикс C
лайк LPCSTR
, LPCTSTR
, LPCWSTR
что означает, что эти указатели являются постоянными, как const char*
или же const wchar_t*
,
Итак, ваш код должен выглядеть так:
INT APIENTRY _tWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPTSTR lpCmdLine, INT iShow)
{
TCHAR* szCmdLine = lpCmdLine;
...
}
или же
INT APIENTRY _tWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPTSTR lpCmdLine, INT iShow)
{
LPTSTR szCmdLine = lpCmdLine;
...
}