我一直在尋找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字符串?