什么是Linux相当于LPTSTR& LPCSTR?

时间:2014-02-05 10:30:16

标签: c linux porting lpcstr lptstr

我正在将Windows库转换为linux。我需要在linux中找到LPTSTR和LPCSTR。

我知道我可以使用wchar_t可以使用,但我不确定使用它。

使用LPTSTR的方法之一如下:

void ErrorExit(LPTSTR zFunction)
{
}

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:7)

在Linux中,您通常不会将wchar_t用于库API函数。大多数库使用UTF-8编码的字符串,因此它们将字符串作为NUL端接字符的普通数组(IMO比使用ANSI和Unicode版本复制所有函数要好得多)。

所以,考虑到这一点:

  • LPCTSTRLPCSTRLPCWSTR - > const char *
  • LPTSTRLPSTRLPWSTR - > char *

如果你坚持使用MS格式的Unicode函数,你必须知道它们实际上使用UTF-16编码的字符串,并且wchar_t不是可移植类型,因为它的大小不是由语言指定的。相反,您可以使用uint16_t

  • LPCWSTR - > const uint16_t *
  • LPWSTR - > uint16_t *

如果您想要兼容MS,可以使用UNICODE宏有条件地将LPTSTRLPTCSTR键入其中一个,但这可能不需要问题

答案 1 :(得分:3)

LPTSTR - 指向TCHAR STRing的长指针(不用担心,长指针与指针相同。)

LPCSTR - 指向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

from msn page LPCSTR

typedef const char* LPCSTR;

from msn page LPTSTR =>

#ifdef UNICODE
 typedef LPWSTR LPTSTR;
#else
 typedef LPSTR LPTSTR;
#endif