Sto provando a scrivere un codice C che sia portatile solo fino a quando l'utente ha gcc
e ha glib
installato.Qual è la differenza tra glib gunichar e wchar_t e quale è meglio per le soluzioni multipiattaforma?
Da tutte le mie ricerche, ho trovato che con gcc
, un wchar_t
è sempre definito come 4 byte, e con un glib
gunichar
è anche 4 byte.
Quello che non ho capito è se come un gunichar
, un wchar_t
è codificato come UCS4 pure. È questo il caso? In tal caso, I dovrebbe in grado di trasmettere semplicemente un gunichar*
a wchar_t*
e utilizzare le funzioni stdc wcs*
, giusto?
hmm. Grazie. Ho appena notato che quasi tutte le funzioni unicode di glib operano su stringhe utf8, e da quello che ho capito (potrebbe essere sbagliato) l'iterazione attraverso un char array codificato multi-byte è inefficiente in quanto è necessario utilizzare un iteratore per assicurarsi di ottenere un full char e semplicemente non un byte (non può semplicemente io ++ farti strada attraverso l'array). Ho appena ricontrollato i documenti e g_utf8_next_char() è implementato come macro, quindi suppongo che non sia più un problema per me. grazie ancora. – ckot
@skot decente supporto Unicode è costoso, in qualsiasi modo lo metti. Preoccupati delle prestazioni una volta che il tuo programma/libreria funziona, non prima. – rubenvb
buon punto. le cose sembrano funzionare bene finora, quindi attraverserò quel ponte se/quando ne ho bisogno. grazie ancora. – ckot