2016-05-06 41 views
0

我有一個特定的用例,我需要用特定於此用例的自定義字符編碼表示字符串。字體等已經得到照顧,但我希望能夠鍵入類似:C中的自定義字符編碼

static char *test= "Test string"; 

,並把它等同於一個字節字符串:

CE D9 E7 E8 00 E7 E8 E6 DD E2 DB FF 

這不是編碼在其他地方使用。有沒有一種方法可以告訴GCC在字符串寫入源代碼時使用這種執行編碼?

+0

在C++中,您可以使用自定義'constexpr'字符串文字後綴。 –

+1

使用C,而不是C++,很抱歉。 –

+1

您將空格表示爲空字符?這是行不通的。 –

回答

2

首先,您需要構建自己的支持編碼的iconv包。 Here's how,向下滾動到「如何添加新字符集?」。

然後,您可以通過設置LD_PRELOAD或其他方式使gcc使用您的自定義iconv

然後使用-fexec-charset-fwide-exec-charset gcc選項。

您可能還需要構建自己的libc。你或許可以用上面的選項重新編譯glibc。或者不是,取決於iconv和glibc如何處理未被編碼爲數字零的「空」終結符。 C語言要求'\0' == 0,但在您的編碼0似乎編碼空間。

+0

從來沒有看過那個。是否有可能重新定義構建特定'iconv'的空終止符值? – LPs

+0

我不知道如何將其與我奇怪的GCC工具包集成在一起,但這無疑似乎是朝着正確方向邁出的一步。謝謝! –

+1

@LPs不知道,更新了答案。 –