Estoy tratando de escribir un código C que es portátil solo si el usuario tiene gcc
, y tiene glib
instalado.¿Cuál es la diferencia entre glib gunichar y wchar_t y cuál es mejor para las soluciones multiplataforma?
De toda mi investigación, he encontrado que con gcc
, un wchar_t
siempre se define como 4 bytes, y con un glib
gunichar
es también 4 bytes.
Lo que no tengo descubierto la es, si como un gunichar
, un wchar_t
se codifica como UCS4 también. ¿Es este el caso? Si es así, I debería ser capaz de simplemente emitir un gunichar*
a un wchar_t*
y utilizar las funciones stdc wcs*
, ¿verdad?
hmm. Gracias. Me acabo de dar cuenta de que casi todas las funciones glib Unicode operan en cadenas utf8, y por lo que entiendo (podría estar mal) iterar a través de una matriz de caracteres codificados de múltiples bytes es ineficiente ya que necesita usar un iterador para asegurarse de obtener un char completo y simplemente no un byte (no puedo simplemente ir + a través de la matriz). Acabo de volver a verificar los documentos y g_utf8_next_char() se implementa como una macro, así que supongo que ya no es un problema para mí. gracias de nuevo. – ckot
El soporte de @skot decente unicode es costoso, en cualquier forma que lo pidas. Preocuparse por el rendimiento una vez que su programa/biblioteca funciona, no antes. – rubenvb
buen punto. las cosas parecen estar funcionando bien hasta el momento, así que cruzaré ese puente si es necesario. gracias de nuevo. – ckot