MSVC -fno-char8_t के बराबर क्या है?


9

C ++ में 20 u8स्ट्रिंग साहित्यिक char8_tप्रकार पर आधारित हैं । वे जानबूझकर char const*किसी भी अधिक में परिवर्तित नहीं होते हैं :

const char* str = u8"Hall\u00f6chen \u2603"; // no longer valid in C++20

बेशक, C ++ 20 की ओर पलायन करते समय अंतिम लक्ष्य पूरी तरह से नए व्यवहार के साथ जाना है (ऊपर दिए गए उदाहरण में: प्रकार बदलें str)। हालांकि, 3 पार्टी पुस्तकालयों के कारण, यह अक्सर तुरंत संभव नहीं है।

प्रस्तावों कि परिचय और "उपाय" char8_t आशा करते हैं कि और उल्लेख बजना और जीसीसी में है कि वहाँ -fno-char8_tपुराने व्यवहार पर बदलने में (जबकि अभी भी 20 सुविधाओं ++ अन्य सी आनंद लेने के लिए सक्षम किया जा रहा) झंडा।

दूसरा प्रस्ताव इस उम्मीद को स्थापित करता है कि Microsoft एक समान ध्वज का पालन करेगा और जोड़ेगा, लेकिन मुझे यह पता नहीं चल पाया कि इसे कैसे सेट किया जाए (कम से कम VS 2019, संस्करण 16.4 में)।

तो क्या किसी को पता है कि MSVC क्या -fno-char8_tहै?

जवाबों:


8

16.1 के बाद से, अनुरूप कंपाइलर ध्वज है /Zc:char8_t-। शून्य से C ++ 20 का उपयोग करते समय माइनर कंपाइलर मोड का उपयोग नहीं करने के लिए कहता है । इसके विपरीत, /Zc:char8_tइसे सक्षम करने के लिए इस्तेमाल किया जा सकता है।


1
ओह, अच्छा स्थान है। मैं एक उत्तर लिखने वाला था, जिसमें कहा गया था कि कोई एक नहीं है
पर कक्षा

1
@LightnessRaceswithMonica संदर्भ जोड़ने के लिए धन्यवाद!
गिलाउम रेसिकोट

मैंने सोचा कि मुझे कुछ योगदान करना चाहिए : P
लाइटनेस दौड़ कक्षा में

इसे थोड़ा सुधार लिया, क्योंकि यह कुछ ऐसा है जिसे मैं जानना चाहता था; इसलिए मुझे भी योगदान देना चाहिए: P
Acorn
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.