В Linux вы обычно не используете wchar_t
для функций API библиотеки. Большинство библиотек используют кодированные строки UTF-8, поэтому они принимают в качестве строк простые массивы символов с нулевым завершением (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
в одну из других, но это, вероятно, не нужно для вашей проблемы.
Если вы работаете на C, вы получите ошибки компиляции с помощью wchar_t. Он будет работать с C++, но не на Windows wchar_t - 2 байта; на Linux это 4 байта. – cup
@cup Когда был 'wchar_t' удален из C? Насколько я знаю, он существует в C. – glglgl
@glglgl: Я не знаю, было ли оно удалено из C. Оно не работает на C-программах в gcc 4.7.2. Работает в Windows. – cup