/Zc:wchar_t (wchar_t jest typem natywnym)
wchar_t
Przeanalizuj jako wbudowany typ zgodnie ze standardem C++.
Składnia
/Zc:wchar_t[-]
Uwagi
Jeśli /Zc:wchar_t jest włączone, wchar_t
jest słowem kluczowym wbudowanego typu całkowitego w kodzie skompilowanym jako C++. Jeśli /Zc:wchar_t- (z znakiem minus) jest określony lub w kodzie skompilowanym jako C, wchar_t
nie jest typem wbudowanym. wchar_t
Zamiast tego element jest definiowany jako element typedef
dla unsigned short
w nagłówku kanonicznym stddef.h. (Implementacja firmy Microsoft definiuje go w innym nagłówku, który jest dołączony przez stddef.h i inne standardowe nagłówki).
Nie zalecamy / Zc:wchar_t- ponieważ standard C++ wymaga wbudowanego wchar_t
typu. typedef
Użycie wersji może powodować problemy z przenośnością. Jeśli uaktualnisz starsze wersje programu Visual Studio i napotkasz błąd kompilatora C2664, ponieważ kod próbuje niejawnie przekonwertować unsigned short
wchar_t
element na , zalecamy zmianę kodu w celu naprawienia błędu, zamiast ustawiania /Zc:wchar_t-.
Opcja /Zc:wchar_t jest domyślnie włączona w kompilacjach języka C++ i jest ignorowana w kompilacjach języka C. / permissive- opcja nie ma wpływu na /Zc:wchar_t.
Firma Microsoft implementuje wchar_t
jako wartość niepodpisaną dwu bajtów. Mapuje na typ natywny __wchar_t
specyficzny dla firmy Microsoft. Aby uzyskać więcej informacji na temat wchar_t
programu , zobacz Zakresy typów danych i typy podstawowe.
Jeśli piszesz nowy kod, który musi współdziałać ze starszym kodem, który nadal używa typedef
wersji wchar_t
programu , można zapewnić przeciążenia zarówno unsigned short
dla odmian wchar_t
, jak i __wchar_t
, aby kod mógł być połączony z kodem skompilowanym z /Zc:wchar_t lub skompilowanym bez niego kodem. W przeciwnym razie należy podać dwie różne kompilacje biblioteki, jedną z i jedną bez /Zc:wchar_t włączone. Nawet w tym przypadku zaleca się kompilowanie starszego kodu za pomocą tego samego kompilatora, którego używa się do kompilowania nowego kodu. Nigdy nie mieszaj plików binarnych skompilowanych różnymi kompilatorami.
Po określeniu /Zc:wchar_t definiowane są symbole _WCHAR_T_DEFINED i _NATIVE_WCHAR_T_DEFINED. Aby uzyskać więcej informacji, zobacz Wstępnie zdefiniowane makra.
Jeśli kod używa funkcji globalnych com kompilatora, ponieważ /Zc:wchar_t jest teraz domyślnie włączony, zalecamy zmianę jawnych odwołań do comsupp.lib (z komentarz pragma lub w wierszu polecenia) na comsuppw.lib lub comsuppwd.lib. (Jeśli musisz skompilować plik /Zc:wchar_t-, użyj comsupp.lib. Jeśli dołączysz plik nagłówka comdef.h, zostanie określona poprawna biblioteka. Aby uzyskać informacje o obsłudze modelu COM kompilatora, zobacz Obsługa kompilatora COM.
wchar_t
Wbudowany typ nie jest obsługiwany podczas kompilowania kodu C. Aby uzyskać więcej informacji na temat problemów ze zgodnością z językiem Visual C++, zobacz Zachowanie niezgodne.
Aby ustawić tę opcję kompilatora w środowisku programowania Visual Studio
Otwórz okno dialogowe Strony właściwości projektu. Aby uzyskać szczegółowe informacje, zobacz Set C++ compiler and build properties in Visual Studio (Ustawianie właściwości kompilatora języka C++ i kompilowania w programie Visual Studio).
Wybierz stronę Właściwości>konfiguracji C/C++>Language.
Zmodyfikuj właściwość Traktuj wchar_t jako typ wbudowany.
Aby programowo ustawić tę opcję kompilatora
- Zobacz: TreatWChar_tAsBuiltInType.