/Zc:wchar_t (wchar_t est un type natif)
Analysez wchar_t
en tant que type intégré selon la norme C++.
Syntaxe
/Zc :wchar_t[-]
Notes
Si /Zc :wchar_t est activé, wchar_t
est un mot clé pour un type intégral intégré dans le code compilé en C++. Si /Zc :wchar_t- (avec un signe moins) est spécifié, ou dans le code compilé en tant que C, wchar_t
n’est pas un type intégré. Au lieu de cela, wchar_t
est défini comme une typedef
valeur dans unsigned short
l’en-tête canonique stddef.h. (L’implémentation De Microsoft la définit dans un autre en-tête inclus par stddef.h et d’autres en-têtes standard.)
Nous vous déconseillons /Zc :wchar_t, car la norme C++ exige qu’il wchar_t
s’agit d’un type intégré. L'utilisation de la version typedef
peut entraîner des problèmes de portabilité. Si vous effectuez une mise à niveau à partir de versions antérieures de Visual Studio et que vous rencontrez une erreur du compilateur C2664 , car le code tente implicitement de convertir un wchar_t
unsigned short
code en , nous vous recommandons de modifier le code pour corriger l’erreur, au lieu de définir /Zc :wchar_t-.
L’option /Zc :wchar_t est activée par défaut dans les compilations C++ et est ignorée dans les compilations C. L’option /permissive- n’affecte pas /Zc :wchar_t.
Microsoft implémente wchar_t
en tant que valeur non signée de deux octets. Il est mappé au type __wchar_t
natif spécifique à Microsoft. Pour plus d’informations sur wchar_t
les types de données, consultez plages de types de données et types fondamentaux.
Si vous écrivez un nouveau code qui doit interagir avec du code plus ancien qui utilise toujours la version de wchar_t
, vous pouvez fournir des surcharges pour les variations et __wchar_t
les unsigned short
variations de wchar_t
, afin que votre code puisse être lié avec du code compilé avec /Zc :wchar_t ou du code compilé sans celui-ci.typedef
Sinon, vous devrez fournir deux builds différentes de la bibliothèque, une avec et une sans /Zc :wchar_t activé. Même dans ce cas, nous vous recommandons de générer le code plus ancien à l'aide du compilateur que vous utilisez pour compiler le nouveau code. Ne mélangez jamais les binaires compilés avec des compilateurs distincts.
Lorsque /Zc :wchar_t est spécifié, _WCHAR_T_DEFINED et _NATIVE_WCHAR_T_DEFINED symboles sont définis. Pour plus d'informations, consultez Predefined Macros.
Si votre code utilise les fonctions globales COM du compilateur, car /Zc :wchar_t est désormais activé par défaut, nous vous recommandons de modifier les références explicites à comsupp.lib (à partir du pragma de commentaire ou sur la ligne de commande) à comsuppw.lib ou comsuppwd.lib. (Si vous devez compiler avec /Zc :wchar_t-, utilisez comsupp.lib.) Si vous incluez le fichier d’en-tête comdef.h, la bibliothèque correcte est spécifiée pour vous. Pour plus d’informations sur la prise en charge com du compilateur, consultez Prise en charge com du compilateur.
Le type intégré n’est pas pris en charge lorsque vous compilez du wchar_t
code C. Pour plus d’informations sur les problèmes de conformité avec Visual C++, consultez Comportement non standard.
Pour définir cette option du compilateur dans l'environnement de développement Visual Studio
Ouvrez la boîte de dialogue Pages de propriété du projet. Pour plus d’informations, consultez Définir le compilateur C++ et les propriétés de build dans Visual Studio.
Sélectionnez la page Propriétés>de configuration C/C++>Language.
Modifiez la wchar_t Traiter comme propriété Type intégrée.
Pour définir cette option du compilateur par programmation
- Consultez TreatWChar_tAsBuiltInType.