我一直在寻找pcre2
的手册页,并试图弄清楚什么情况下需要PCRE2_CODE_UNIT_WIDTH
的定义。libpcre2代码单位宽度
为PCRE2的源代码可以被编译为支持8位,16位,或 32位代码单元,这意味着最多三个独立的文库可以 安装。
问题1:PCRE2的代码单元究竟是什么?这是否意味着我需要使用PCRE2_CODE_UNIT_WIDTH 8
来处理char*
与PCRE2_CODE_UNIT_WIDTH 32
对于wchar *
?如果我的平台的wchar
是16位呢?那需要有条件地使用PCRE2_CODE_UNIT_WIDTH 16
?如果这是真的,好像根据How big is wchar_t with GCC?我会需要使用PCRE2_CODE_UNIT_WIDTH = 8 * __SIZEOF_WCHAR_T__
在统一的主题:
在这三种情况下,字符串可以解释无论是作为每个代码单元中的一个字符,或者作为UTF编码的Unicode,支持Unicode通用类别属性。 Unicode支持在构建时是可选的(但是是默认的)。但是,处理字符串作为UTF代码单元必须在运行时显式启用。
问题2:究竟是支持Unicode时PCRE2_CODE_UNIT_WIDTH是什么意思? PCRE2_CODE_UNIT_WIDTH 8
是否采用UTF-8,我需要设置PCRE2_CODE_UNIT_WIDTH 16
来处理UTF-16字符串?