/Zc:wchar_t (wchar_t ist der native Typ)
Analysieren Sie wchar_t
als integrierten Typ entsprechend dem C++-Standard.
Syntax
/Zc:wchar_t[-]
Hinweise
Wenn /Zc:wchar_t aktiviert ist, wchar_t
ist ein Schlüsselwort für einen integrierten integralen Typ in Code, der als C++ kompiliert wurde. Wenn /Zc:wchar_t - (mit einem Minuszeichen) angegeben oder im Code, der als C kompiliert wurde, wchar_t
kein integrierter Typ ist. wchar_t
Ist stattdessen als ein typedef
Element unsigned short
für die kanonische Kopfzeile "stddef.h" definiert. (Die Microsoft-Implementierung definiert sie in einem anderen Header, der von stddef.h und anderen Standardheadern enthalten ist.)
"/Zc:wchar_t" wird nicht empfohlen , da der C++-Standard einen integrierten Typ erfordert wchar_t
. Die Verwendung der typedef
-Version kann Portabilitätsprobleme verursachen. Wenn Sie ein Upgrade von früheren Versionen von Visual Studio durchführen und auf den Compilerfehler C2664 stoßen, da der Code versucht, einen unsigned short
wchar_t
Code implizit in zu konvertieren, wird empfohlen, den Code so zu ändern, dass der Fehler behoben wird, anstatt "/Zc:wchar_t-" festzulegen.
Die Option "/Zc:wchar_t " ist in C++-Kompilierungen standardmäßig aktiviert und wird in C-Kompilierungen ignoriert. Die Option "/permissive" wirkt sich nicht auf /Zc:wchar_t aus.
Microsoft implementiert wchar_t
als 2-Byte-Wert ohne Vorzeichen. Er wird dem microsoftspezifischen nativen Typ __wchar_t
zugeordnet. Weitere Informationen finden wchar_t
Sie unter Datentypbereiche und Grundlegende Typen.
Wenn Sie neuen Code schreiben, der mit älterem Code interoperieren muss, der weiterhin die typedef
Version verwendetwchar_t
, können Sie Überladungen sowohl für die als __wchar_t
auch für Variationen unsigned short
bereitstellenwchar_t
, sodass Ihr Code mit codekompiliert mit /Zc:wchar_t oder code kompiliert werden kann. Andernfalls müssen Sie zwei verschiedene Builds der Bibliothek bereitstellen, eine mit und eine ohne "/Zc:wchar_t aktiviert". Allerdings wird in beiden Fällen empfohlen, den älteren und den neuen Code mit demselben Compiler zu erstellen. Kombinieren Sie niemals die Binärdateien, die mit unterschiedlichen Compilern erstellt wurden.
Wenn /Zc:wchar_t angegeben wird, werden _WCHAR_T_DEFINED und _NATIVE_WCHAR_T_DEFINED Symbole definiert. Weitere Informationen finden Sie unter Predefined Macros.
Wenn Ihr Code die globalen COM-Compilerfunktionen verwendet, da /Zc:wchar_t jetzt standardmäßig aktiviert ist, empfehlen wir, explizite Verweise auf comsupp.lib (entweder aus dem Kommentar pragma oder in der Befehlszeile) in "comsuppw.lib" oder "comsuppwd.lib" zu ändern. (Wenn Sie mit /Zc:wchar_t-kompilieren müssen, verwenden Sie comsupp.lib.) Wenn Sie die Headerdatei "comdef.h" einschließen, wird die richtige Bibliothek für Sie angegeben. Informationen zur COM-Unterstützung für Compiler finden Sie unter Compiler-COM-Unterstützung.
Der wchar_t
integrierte Typ wird beim Kompilieren von C-Code nicht unterstützt. Weitere Informationen zu Konformitätsproblemen mit Visual C++ finden Sie unter "Nicht standardmäßiges Verhalten".
So legen Sie diese Compileroption in der Visual Studio-Entwicklungsumgebung fest
Öffnen Sie das Dialogfeld Eigenschaftenseiten des Projekts. Weitere Informationen erhalten Sie unter Set C++ compiler and build properties in Visual Studio (Festlegen der Compiler- und Buildeigenschaften (C++) in Visual Studio).
Wählen Sie die Seite "Konfigurationseigenschaften>C/C++->Sprache" aus.
Ändern Sie die "Treat wchar_t as Built-in Type "-Eigenschaft.
So legen Sie diese Compileroption programmgesteuert fest
- Siehe TreatWChar_tAsBuiltInType.