Mappage _TCHAR
Remonter à Unicode pour C++ - Index
Le mappage _TCHAR dans C++Builder a été conçu pour rendre plus facile l'écriture du code source qui peut être utilisé avec des chaînes étendues ou étroites. Vous pouvez mapper _TCHAR en wchar_t
ou char
afin que votre code utilise le type de chaîne correct requis par frameworks et bibliothèques RAD Studio ou l'API Windows, et afin que les fonctions de la RTL migrent vers la définition correcte (respectivement, étendue ou étroite). Pour définir l'option Mappage de _TCHAR en, utilisez la boîte de dialogue Projet > Options > C++ (options partagées).
Votre application C++ doit traiter à la fois les chaînes étendues et les chaînes étroites :
- La RTL de C++ contient des routines conçues à la fois pour
char
etwchar_t
. - L'API Windows utilise typiquement les chaînes étroites, nécessitant
char
. - Frameworks et bibliothèques RAD Studio utilisent des données de chaînes étendues (Unicode), nécessitant
wchar_t
.
Dans les interactions avec les frameworks et bibliothèques RAD Studio, vous avez maintenant besoin d'utiliser les fonctions de la RTL étendues, ou effectuez les conversions adéquates avant de passer les données aux frameworks et bibliothèques RAD Studio. (Voir Routines de conversion UTF-8).
_TCHAR, déclaré conditionnellement dans le fichier d'en-tête tchar.h, est défini comme un typedef (alias) qui est mappé en char
ou wchar_t
. Quand vous voulez écrire du code portable (qui peut interagir avec la RTL de C++, l'API de Windows et les frameworks et bibliothèques RAD Studio), vous devez utiliser _TCHAR (au lieu de coder en dur les types de données char
ou wchar_t
). Vous pouvez ensuite ajuster l'option de mappage _TCHAR sur char
ou wchar_t
(sur la page C++ (options partagées)). Par exemple, le paramètre de mappage _TCHAR en cours contrôle si votre application utilise les versions ANSI ou les versions étendues de la RTL Fonctions flottantes RTL.
Sommaire
- 1 Option "Mappage de _TCHAR en"
- 2 Définir l'option "Mappage de _TCHAR en" sur la page Répertoires et Conditions
- 3 Utiliser "Mappage de _TCHAR en" avec wchar_t pour les frameworks et bibliothèques RAD Studio
- 4 Modifications de code nécessaires pour utiliser "Mappage de _TCHAR en" avec wchar_t
- 5 Utiliser la macro _TEXT avant les littéraux texte
- 6 Voir aussi
Option "Mappage de _TCHAR en"
L'option de projet Mappage de _TCHAR en contrôle la définition flottante de _TCHAR
dans votre code.
_TCHAR
peut être mappé ou migré vers char
ou wchar_t
, comme le montre le tableau suivant :
Valeurs "Mappage de _TCHAR en" :
char |
_TCHAR se substitue à char .
|
wchar_t |
|
Définir l'option "Mappage de _TCHAR en" sur la page Répertoires et Conditions
Utilisez la boîte de dialogue Projet > Options > C++ (options partagées) .
Utiliser "Mappage de _TCHAR en" avec wchar_t
pour les frameworks et bibliothèques RAD Studio
Les frameworks et bibliothèques RAD Studio sont implémentés dans Unicode et attendent toujours Unicode. Par défaut _TCHAR est mappé en wchar_t
.
Par exemple, le code suivant ne compile pas, à moins que vous ne définissiez l'option 'Mappage de _TCHAR en' sur wchar_t
:
TResourceStream* res = new TResourceStream(HInstance, ResourceId, RT_RCDATA);
Si l'option 'Mappage de _TCHAR' est définie sur char, RT_RCDATA
est mappé en un char*
.
Les frameworks et bibliothèques RAD Studio attendent wchar_t*
, donc la définition de char est problématique si vous voulez travailler avec les frameworks et bibliothèques RAD Studio.
Modifications de code nécessaires pour utiliser "Mappage de _TCHAR en" avec wchar_t
Quand _TCHAR est mappé sur wchar_t
(le paramétrage par défaut), votre projet doit avoir un point d'entrée appelé _tmain
ou _tWinMain
. Les nouveaux projets créés avec C++Builder ont ces points d'entrée par défaut, mais les projets importés peuvent nécessiter l'ajout manuel de ces points d'entrée.
Pour garantir que les littéraux chaînes et caractères migrent correctement en ANSI ou Unicode, utilisez la macro _TEXT
ou _T
. Par exemple :
Vous devez aussi inclure le fichier d'en-tête tchar.h, qui contient les définitions flottantes et les points d'entrée nécessaires. Pour obtenir la liste des fonctions flottantes contenues dans tchar.h, voir Fonctions flottantes.
Remarque : Si au lieu d'utiliser
_tmain
, vous utilisezmain
en tant que point d'entrée, le lieur ne peut pas lier l'exécutable. Pour les nouveaux projets qui utilisent les frameworks et bibliothèques RAD Studio, les experts insèrent automatiquement un point d'entrée_tmain
.
Utiliser la macro _TEXT
avant les littéraux texte
Pour garantir que les littéraux chaînes et caractères migrent correctement en ANSI ou Unicode, utilisez la macro _TEXT
ou _T
. Par exemple :
::MessageBox(0, _TEXT("The message"), _TEXT("The caption"), MB_OK);
Avec _UNICODE défini, la macro _TEXT
(ou _T
) convertit une chaîne littérale (caractère) en une fiche préfixée par L. Sinon, _TEXT
convertit le littéral sans le préfixe L
. Par exemple, si vous définissez _UNICODE, alors
_TEXT("The message")
convertit en une fiche préfixée par L :
L"The message"
Sinon, cette macro effectue la conversion sans le préfixe L
:
"The message"