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) อย่างไรก็ตามเนื่องจากห้องสมุดของบุคคลที่สามจึงไม่สามารถทำได้ในทันที

ข้อเสนอที่แนะนำและ"แก้ไข" char8_tคาดการณ์และกล่าวถึงในเสียงดังกราวและ gcc ว่ามีการ-fno-char8_tเปลี่ยนสถานะกลับเป็นพฤติกรรมเก่า (ในขณะที่ยังคงสามารถเพลิดเพลินกับคุณลักษณะ C ++ 20 อื่น ๆ )

ข้อเสนอที่ 2 ตั้งค่าความคาดหวังที่ Microsoft จะติดตามและเพิ่มการตั้งค่าสถานะที่คล้ายกัน แต่ฉันไม่สามารถค้นหาวิธีการตั้งค่าได้ (อย่างน้อยใน VS 2019 เวอร์ชัน 16.4)

ดังนั้นใครจะรู้ว่าสิ่งที่เทียบเท่า MSVC สำหรับ-fno-char8_tคืออะไร?

คำตอบ:


8

ตั้งแต่ 16.1 มีแฟล็กคอมไพเลอร์ที่สอดคล้อง/Zc:char8_t-กัน เครื่องหมายลบบอกให้คอมไพเลอร์ไม่ใช้โหมดความสอดคล้องที่นี่เมื่อใช้ C ++ 20 ในทางตรงกันข้าม/Zc:char8_tสามารถใช้เพื่อเปิดใช้งานได้


1
โอ้จุดที่ดี ฉันกำลังจะเขียนคำตอบโดยบอกว่าไม่มีสักคน :)
Lightness Races ใน Orbit

1
@LightnessRaceswithMonica ขอบคุณที่เพิ่มการอ้างอิง!
Guillaume Racicot

คิดว่าฉันควรจะมีส่วนร่วมในบางสิ่งบางอย่าง : P
Lightness แข่งในวงโคจร

ปรับปรุงมันอีกเล็กน้อยเพราะมันเป็นสิ่งที่ฉันอยากรู้ ดังนั้นฉันควรมีส่วนร่วมด้วย: P
โอ๊ก
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.