J'ai regardé la page man pour pcre2
, et j'essaie de comprendre précisément quelles situations nécessitent quelles définitions de PCRE2_CODE_UNIT_WIDTH
.libpcre2 Code Unité Largeur
Le code source pour PCRE2 peut être compilé pour supporter 8 bits, 16 bits ou unités de code de 32 bits, ce qui signifie que jusqu'à trois bibliothèques séparées peuvent être installés .
Question 1: Quelle est exactement l'unité de code de PCRE2? Est-ce que cela signifie que j'ai besoin d'utiliser PCRE2_CODE_UNIT_WIDTH 8
pour gérer char*
par rapport à PCRE2_CODE_UNIT_WIDTH 32
pour wchar *
? Que se passe-t-il si le numéro wchar
de ma plateforme est 16 bits? cela nécessiterait-il conditionnellement l'utilisation de PCRE2_CODE_UNIT_WIDTH 16
? Si cela est vrai, il semble que selon How big is wchar_t with GCC? je besoin d'utiliser le PCRE2_CODE_UNIT_WIDTH = 8 * __SIZEOF_WCHAR_T__
Sur le thème de l'Unicode:
Dans les trois cas, les chaînes peuvent être interprétés soit comme un caractère par unité de code , ou comme Unicode codé en UTF, avec prise en charge des propriétés de catégorie générale Unicode. La prise en charge d'Unicode est facultative au moment de la construction (mais c'est la valeur par défaut). Cependant, le traitement des chaînes comme unités de code UTF doit être activé explicitement au moment de l'exécution.
Question 2: Que signifie exactement PCRE2_CODE_UNIT_WIDTH signifie quand Unicode est activé? Est-ce que PCRE2_CODE_UNIT_WIDTH 8
prend UTF-8, et je dois régler PCRE2_CODE_UNIT_WIDTH 16
pour gérer une chaîne UTF-16?