2014-11-04 3 views
5

मैं यूसीएस 4 का उपयोग करने के लिए सब कुछ और हर जगह के लिए char* का उपयोग करने से एक एप्लिकेशन पोर्ट कर रहा हूं क्योंकि यह आंतरिक यूनिकोड प्रतिनिधित्व है। मैं तारों को परिभाषित करने के लिए सी 11 के U"unicode literals" का उपयोग करता हूं, जो char32_t के सरणी में विस्तारित है, जो uint32_t अनिवार्य रूप से हैं।सी 11 यू "यूनिकोड अक्षर" के लिए `__attribute __ ((प्रारूप (printf, x, y)) का सही तरीके से उपयोग कैसे करें?

समस्या printf-जैसी कार्यों को ठीक से एनोटेट करने के साथ समस्या है। जैसा कि "प्रारूप" अब char* नहीं है, संकलक इसे आगे संकलित करने से इंकार कर देता है, साथ ही यह %s प्रारूप के लिए के बजाय char32_t * से खुश नहीं होगा, मुझे लगता है।

मैं stdlib *printf परिवार पर बिल्कुल निर्भर नहीं हूं, इसलिए प्रारूपण पूरी तरह से मेरे कार्यान्वयन द्वारा किया जाता है।

इस विशेषता को पूरी तरह अक्षम करने के अलावा, इसके लिए सही समाधान क्या है?

+0

एक साइड-प्रश्न: यूटीएफ -8 के बजाय यूटीएफ -32 का उपयोग करने से आपको क्या लाभ लगता है? और क्या आप वास्तव में यकीन है कि इसके लायक है? (यूटीएफ -32 में मल्टी-कोडपॉइंट ग्लाइफ भी हैं।) – Deduplicator

+1

मेरा एप्लिकेशन पूरी तरह से कोडपॉइंट्स पर काम करता है, इसलिए मेरे लिए ग्रैफेम क्लस्टर, उपयोगकर्ता-कथित पात्रों और ऐसे पर विचार करने के लिए वास्तव में कोई बात नहीं है। यूसीएस 4 अब तक स्ट्रिंग प्रसंस्करण को सरल बनाता है, क्योंकि मैं मौजूदा कोडबेस का अधिकांश उपयोग कर सकता हूं, और मैं अगले पुनरावृत्ति में आंतरिक प्रतिनिधित्व को यूटीएफ 8 में माइग्रेट कर दूंगा। – toriningen

+0

मुझे लगता है कि 'यू' के बिंदु को भी याद आ रहा है ... "सामान, एक जटिल कदम की तरह लगता है, विशेष रूप से सी 11 इन्हें संभालने के लिए केवल मामूली समर्थन जोड़ता है। आप एमबीएस के रूप में आवश्यक सभी यूनिकोड कोड बिंदुओं को लागू करने के लिए केवल '\ u2002" नोटेशन का उपयोग कर सकते हैं। प्रश्न के लिए, आपको शायद जीसीसी लोगों से सीधे पूछना चाहिए। यह कुछ भी आम नहीं है, इसलिए आपको वास्तव में इस सवाल पर अपनी विशेषज्ञता की आवश्यकता है। –

उत्तर

1

वर्तमान में जीसीसी में ऐसा करने का कोई तरीका नहीं है। यह एक ज्ञात बग है, GCC bug 64862

+1

अपडेट के लिए बहुत बहुत धन्यवाद! शायद clang पर कोई भी समान जानकारी? – toriningen

संबंधित मुद्दे