MSVC tương đương với -fno-char8_t là gì?


9

Trong C ++, 20 u8chuỗi ký tự được dựa trên char8_tloại. Họ cố tình không chuyển đổi sang char const*nữa:

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

Tất nhiên, mục tiêu cuối cùng khi chuyển sang C ++ 20 là hoàn toàn phù hợp với hành vi mới (trong ví dụ trên: thay đổi loại str). Tuy nhiên, vì các thư viện của bên thứ 3, điều này thường không thể thực hiện được ngay lập tức.

Các đề xuất giới thiệu"khắc phục" char8_t dự đoán điều đó và đề cập rằng trong clang và gcc có -fno-char8_tcờ để chuyển về hành vi cũ (trong khi vẫn có thể thưởng thức các tính năng khác của C ++ 20).

Đề xuất thứ 2 đặt ra kỳ vọng rằng Microsoft sẽ theo dõi và thêm một cờ tương tự, nhưng tôi không thể tìm cách thiết lập nó (ít nhất là trong VS 2019, Phiên bản 16.4).

Vậy có ai biết MSVC tương đương với -fno-char8_tcái gì không?

Câu trả lời:


8

Kể từ 16.1, có cờ biên dịch phù hợp /Zc:char8_t-. Điểm trừ cho trình biên dịch không sử dụng chế độ tuân thủ ở đây khi sử dụng C ++ 20. Ngược lại, /Zc:char8_tcó thể được sử dụng để kích hoạt nó.


1
Oh, điểm tốt. Tôi chuẩn bị viết một câu trả lời rằng không có ai :)
Các cuộc đua nhẹ nhàng trong quỹ đạo

1
@LightnessRaceswithMonica cảm ơn vì đã thêm tài liệu tham khảo!
Trường đua Guillaume

Nghĩ rằng tôi nên đóng góp một cái gì đó : P
Các cuộc đua nhẹ nhàng trong quỹ đạo

Cũng cải thiện nó một chút, vì đó là điều tôi muốn biết; vì vậy tôi cũng nên đóng góp: P
Acorn
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.