我有一個特定的用例,我需要用特定於此用例的自定義字符編碼表示字符串。字體等已經得到照顧,但我希望能夠鍵入類似:C中的自定義字符編碼
static char *test= "Test string";
,並把它等同於一個字節字符串:
CE D9 E7 E8 00 E7 E8 E6 DD E2 DB FF
這不是編碼在其他地方使用。有沒有一種方法可以告訴GCC在字符串寫入源代碼時使用這種執行編碼?
我有一個特定的用例,我需要用特定於此用例的自定義字符編碼表示字符串。字體等已經得到照顧,但我希望能夠鍵入類似:C中的自定義字符編碼
static char *test= "Test string";
,並把它等同於一個字節字符串:
CE D9 E7 E8 00 E7 E8 E6 DD E2 DB FF
這不是編碼在其他地方使用。有沒有一種方法可以告訴GCC在字符串寫入源代碼時使用這種執行編碼?
首先,您需要構建自己的支持編碼的iconv
包。 Here's how,向下滾動到「如何添加新字符集?」。
然後,您可以通過設置LD_PRELOAD
或其他方式使gcc
使用您的自定義iconv
。
然後使用-fexec-charset
和-fwide-exec-charset
gcc選項。
您可能還需要構建自己的libc。你或許可以用上面的選項重新編譯glibc。或者不是,取決於iconv和glibc如何處理未被編碼爲數字零的「空」終結符。 C語言要求'\0' == 0
,但在您的編碼0似乎編碼空間。
從來沒有看過那個。是否有可能重新定義構建特定'iconv'的空終止符值? – LPs
我不知道如何將其與我奇怪的GCC工具包集成在一起,但這無疑似乎是朝着正確方向邁出的一步。謝謝! –
@LPs不知道,更新了答案。 –
在C++中,您可以使用自定義'constexpr'字符串文字後綴。 –
使用C,而不是C++,很抱歉。 –
您將空格表示爲空字符?這是行不通的。 –