Что такое Linux-эквивалент LPTSTR и LPCSTR?
Я конвертирую библиотеку Windows в Linux. Мне нужно найти LPTSTR и LPCSTR в Linux.
Я узнаю, что я могу использовать wchar_t, но я не совсем уверен в его использовании.
Один из методов, который использует LPTSTR, выглядит следующим образом:
void ErrorExit(LPTSTR zFunction)
{
}
Любая помощь будет оценена!
2 ответа
В Linux вы обычно не используете wchar_t
для функций библиотеки API. Большинство библиотек используют строки в кодировке UTF-8, поэтому они принимают в качестве строк простые массивы символов с NUL-символами (IMO, что намного лучше, чем дублирование всех функций в версиях ANSI и Unicode).
Итак, имея это в виду:
LPCTSTR
,LPCSTR
,LPCWSTR
->const char *
,LPTSTR
,LPSTR
,LPWSTR
->char *
,
Если вы настаиваете на использовании функций Unicode в стиле MS, вы должны знать, что они действительно используют строки в кодировке UTF-16, и wchar_t
не является переносимым типом, так как его размер не указан языком. Вместо этого вы можете использовать uint16_t
:
LPCWSTR
->const uint16_t *
,LPWSTR
->uint16_t *
,
И если вы хотите быть более совместимым с MS, вы можете использовать UNICODE
макрос для условного определения типа LPTSTR
а также LPTCSTR
в один из других, но это, вероятно, не нужно для вашей проблемы.
LPTSTR - Long Pointer to TCHAR STRing (не беспокойтесь, длинный указатель такой же, как указатель.)
LPCSTR - Long Pointer to Const STRing
LPSTR = char*
LPCSTR = const char*
LPWSTR = wchar_t*
LPCWSTR = const wchar_t*
LPTSTR = char* or wchar_t* depending on _UNICODE
LPCTSTR = const char* or const wchar_t* depending on _UNICODE
typedef const char* LPCSTR;
#ifdef UNICODE
typedef LPWSTR LPTSTR;
#else
typedef LPSTR LPTSTR;
#endif