tchar.h pe linux (Programare, C++, Linux, Internaționalizare, Tchar)

Sudarshan a intrebat.

Încerc să scriu cod C ++ i18n cross platform. Deoarece majoritatea sistemelor linux preferă să folosească UTF-8 ca codificare a caracterelor, m-am gândit că ar trebui să folosesc string pe linux și wstring pe Windows. Este tchar.h disponibil pe linux? Care este un înlocuitor echivalent pentru tchar.h pe Linux?

2 răspunsuri
Paul Sonier

Este posibil să găsiți acest articol să vă fie util. În special, aproape de final se discută puțin despre utilizarea TCHAR și despre cum să te descurci cu codul Windows.

Rezumatul articolului este:

TCHAR va fi tradus într-un tip de date de caractere largi la compilarea acestui cod cu compilatorul GNU C (majoritatea bibliotecilor portabile definesc TCHAR în antetele lor și fac referire la wchar_t). Acesta a fost, de fapt, modul în care am transformat programul meu C++ într-un generator de anagrame: Am folosit șiruri de caractere standard C++ completate cu UTF-8 și am alimentat datele cu pointeri transformați în wchar_t către funcții de bibliotecă. Datele UTF-8 interpretate ca UTF-32 echivalează cu un gunoi (dar este extrem de util pentru ofuscarea datelor și a erorilor).

Comentarii

  • Pentru a fi clar, tchar.h este numai pentru Windows. Dar este destul de banal să vă creați propriul tchar.h. –  > Por Naaff.
J.R. Heisey

Pentru a-mi construi sursa centrată pe Windows am putut folosi fișierul tchar.h de la Cygwin’s, găsit în dosarul cygwinusrincludew32api.

De fapt, eu construiesc folosind Android NDK.Pentru scopurile mele, am făcut o copie a fișierului tchar.h și l-am modificat.

//#include <crtdefs.h>

#define _CRTIMP

//#define _strninc(_pc,_sz) (((_pc)+(_sz)))
//  _CRTIMP size_t __cdecl __strncnt(const char *_Str,size_t _Cnt);