Estoy convirtiendo la biblioteca de Windows a Linux. Necesito encontrar LPTSTR y LPCSTR en Linux.
Me doy cuenta de que puedo usar wchar_t, pero no estoy muy seguro de usarlo.
uno de los métodos que utiliza LPTSTR es el siguiente:
void ErrorExit(LPTSTR zFunction) { }¡Cualquier ayuda será apreciada!
En Linux, generalmente no usa wchar_t para las funciones de la API de la biblioteca. La mayoría de las bibliotecas usan cadenas codificadas en UTF-8, por lo que toman como cadenas matrices simples de caracteres terminados en NUL (en mi opinión, eso es mucho mejor que duplicar todas las funciones con las versiones ANSI y Unicode).
Así que con eso en mente:
LPCTSTR , LPCSTR , LPCWSTR -> const char * .LPTSTR , LPSTR , LPWSTR -> char * . Si insiste en usar funciones Unicode, estilo MS, debe tener en cuenta que en realidad usan cadenas codificadas en UTF-16, y wchar_t no es un tipo portátil, ya que su tamaño no está especificado por el idioma. En su lugar, puede usar uint16_t :
LPCWSTR -> const uint16_t * .LPWSTR -> uint16_t * . Y si desea ser más compatible con MS, puede usar la macro UNICODE para tipear condicionalmente LPTSTR y LPTCSTR en uno de los otros, pero eso probablemente no sea necesario para su problema.
LPTSTR - Long Pointer to TCHAR STRing (No se preocupe, un puntero largo es lo mismo que un puntero).
LPCSTR - Long Pointer to a 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