Partager via


/Zc:wchar_t (wchar_t est un type natif)

Analysez wchar_t en tant que type intégré selon la norme C++. Par défaut, /Zc:wchar_t est activé.

/Zc:wchar_t[-]

Notes

Si /Zc:wchar_t est activé, wchar_t est mappé au type natif spécifique à Microsoft __wchar_t. Si /Zc:wchar_t- (avec un signe moins) est spécifié, wchar_t est mappé à typedef pour unsigned short. (Dans Visual C++ 6.0 et les versions antérieures, wchar_t n'a pas été implémenté en tant que type intégré mais a été déclaré dans wchar.h en tant que typedef pour unsigned short.) Nous déconseillons /Zc:wchar_t-, car la norme C++ nécessite que wchar_t soit 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 C++ et si vous constatez l'erreur du compilateur C2664, car le code essaie de convertir implicitement wchar_t en unsigned short, nous vous recommandons de modifier le code pour corriger cette erreur, au lieu de définir /Zc:wchar_t-.

Microsoft implémente wchar_t en tant que valeur non signée de deux octets. Pour plus d'informations sur wchar_t, consultez Plages de types de données et Types fondamentaux (C++).

Si vous écrivez un nouveau code qui doit interagir avec du code plus ancien toujours basé sur la version typedef de wchar_t, vous pouvez fournir des surcharges pour les variantes unsigned short et __wchar_t de wchar_t, afin que votre code puisse être lié au code compilé avec /Zc:wchar_t ou au code compilé sans lui. Sinon, vous devez fournir deux builds différentes de la bibliothèque (l'une avec et l'autre sans l'activation de /Zc:wchar_t). 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é, les symboles _WCHAR_T_DEFINED et _NATIVE_WCHAR_T_DEFINED sont définis. Pour plus d'informations, voir Macros prédéfinies.

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 remplacer les références explicites à comsupp.lib (à partir du pragma comment ou sur la ligne de commande) par omsuppw.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 appropriée est automatiquement spécifiée. Pour plus d'informations sur la prise en charge du compilateur COM, consultez Prise en charge COM du compilateur.

Le type wchar_t n'est pas pris en charge lorsque vous compilez du 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

  1. Ouvrez la boîte de dialogue Pages de propriété du projet. Pour plus d'informations, voir Utilisation des propriétés de projet.

  2. Dans le volet gauche, développez Propriétés de configuration, C/C++, puis sélectionnez Langage.

  3. Modifiez la propriété Traitement de WChar_t en tant que type intégré.

Pour définir cette option du compilateur par programmation

Voir aussi

Référence

/Zc (Conformité)