मैं यूबंटू लिनक्स पर विंडोज़ और जीसीसी पर माइक्रोसॉफ्ट विजुअल स्टूडियो का उपयोग कर सी ++ क्रॉस प्लेटफार्म विकसित करता हूं।क्या बीओएम स्रोत फाइलों के साथ यूटीएफ -8 संकलित करने के लिए जीसीसी प्राप्त करना संभव है?
दृश्य स्टूडियो में मैं अपने कोड में "π" और "²" की तरह यूनिकोड प्रतीकों का उपयोग कर सकते हैं। विजुअल स्टूडियो हमेशा स्रोत फ़ाइलों को बीओएम (बाइट ऑर्डर मार्क) के साथ यूटीएफ -8 के रूप में सहेजता है।
उदाहरण के लिए:
// A = π.r²
double π = 3.14;
जीसीसी खुशी से इन फ़ाइलों को संकलित करता है केवल अगर मैं बीओएम पहले हटा दें। मैं बीओएम को दूर नहीं करते हैं, मैं इस तरह की त्रुटियों मिलती है:
wwga_hydutils.cpp:28:9: error: stray ‘\317’ in program
wwga_hydutils.cpp:28:9: error: stray ‘\200’ in program
कौन सा मुझे प्रश्न के लिए लाता है:
वहाँ एक रास्ता जीसीसी पहले बीओएम निकाले बिना UTF-8 फ़ाइलों को संकलित करने के पाने के लिए है ?
मैं उपयोग कर रहा हूँ:
- विंडोज 7
- विजुअल स्टूडियो 2010
और:
- Ubuntu oneiric 11.10
- जीसीसी 4.6.1
संपादित करें (के रूप में द्वारा apt-get जीसीसी स्थापित प्रदान की गई):
के रूप में पहले टिप्पणीकार ने कहा, मेरी समस्या यह थी नहीं बीओएम, लेकिन होने स्ट्रिंग स्थिरांक के बाहर गैर-ascii वर्ण। जीसीसी को प्रतीक नामों में गैर-असीसी वर्ण पसंद नहीं हैं, लेकिन यह पता चला है कि जीसीसी बीओएम के साथ यूटीएफ -8 के साथ पूरी तरह से संगत है।
वर्क्स ठीक कुछ कोशिश,। बीओएम के साथ फाइल करें। साथ ही, आपके द्वारा प्राप्त त्रुटि में बीओएम के साथ कुछ लेना देना नहीं है, लेकिन ऐसा लगता है कि प्रश्न में यूनिकोड वर्ण किसी भी स्ट्रिंग के बाहर हैं (यही कारण है कि उन्हें _stray_ कहा जाता है।) –
@ जोचिमपिलबोर्ग हाँ यूनिकोड वर्ण स्ट्रिंग के बाहर हैं, "π" मैं प्रतीक नाम के रूप में उपयोग कर रहा था, "²" सिर्फ टिप्पणियों में था। जब मैं बीओएम को हटाता हूं, तो यह कंसोल आउटपुट से त्रुटि को खत्म करता है, लेकिन मुझे लगता है कि यह कोई गारंटी नहीं है कि जीसीसी वास्तव में पात्रों को संभालने में सक्षम है। – Boinst
@ जोचिमपिलबोर्ग, मैंने उस संदर्भ को शामिल करने के लिए प्रश्न अपडेट किया है जिसमें मैं यूनिकोड वर्णों का उपयोग कर रहा हूं। – Boinst