_TCHAR-Zuordnung
Nach oben zu Unicode für C++ - Index
Die _TCHAR-Zuordnung in C++Builder dient der Vereinfachung des Schreibens von Quellcode, der mit "Wide"- oder "Narrow"-Strings verwendet werden kann. Sie können _TCHAR entweder wchar_t
oder char
zuordnen, so dass Ihr Code den korrekten für RAD Studio-Frameworks und -Bibliotheken oder die Windows-API erforderlichen String-Typ verwendet und RTL-Funktionen in die korrekte Definition (Wide bzw. Narrow) übergehen. Die Option _TCHAR entspricht wird im Dialogfeld Projekt > Optionen > C++ (Gemeinsame Optionen) gesetzt.
Ihre C++-Anwendung muss mit Wide- und Narrow-Strings arbeiten:
- Die C++-RTL enthält Routinen für
char
undwchar_t
. - Die Windows-API ist typischerweise "narrow" und erfordert daher
char
. - RAD Studio-Frameworks und -Bibliotheken verwenden Wide-String-Daten (Unicode) und erfordert
wchar_t
.
In Interaktionen mit RAD Studio-Frameworks und -Bibliotheken müssen Sie jetzt die Wide-RTL-Funktionen verwenden oder vor der Übergabe von Daten an RAD Studio-Frameworks und -Bibliotheken geeignete Konvertierungen durchführen. (Siehe UTF-8-Konvertierungsroutinen)
_TCHAR, das in der Header-Datei tchar.h konditional deklariert ist, ist als ein typedef (Alias) definiert, das entweder char
oder wchar_t
zugeordnet wird. Wenn Sie portierbaren Quelltext schreiben möchten (der mit der C++-RTL, der Windows-API und RAD Studio-Frameworks und -Bibliotheken interagieren kann), sollten Sie _TCHAR verwenden (anstatt die Datentypen char
oder wchar_t
hart zu codieren). Dann können Sie die _TCHAR-Zuordnungsoption entweder auf char
oder auf wchar_t
(auf der Seite C++ (Gemeinsame Optionen)) setzen. Beispielsweise steuert die aktuelle _TCHAR-Zuordnungseinstellung, ob Ihre Anwendung die ANSI-Versionen oder die Wide-Versionen der Floating-Funktionen in der RTL verwendet.
Inhaltsverzeichnis
- 1 Option '_TCHAR entspricht'
- 2 So legen Sie die Option '_TCHAR entspricht' auf die Seite Verzeichnisse und Bediengungen fest:
- 3 Verwendung von '_TCHAR entspricht' wchar_t für RAD Studio-Frameworks und -Bibliotheken
- 4 Erforderliche Codeänderungen für '_TCHAR entspricht' wchar_t
- 5 Verwendung des Makros _TEXT vor Textliteralen
- 6 Siehe auch
Option '_TCHAR entspricht'
Die Projektoption _TCHAR entspricht steuert die Floating-Definition von _TCHAR
in Ihrem Code. _TCHAR
kann entweder char
oder wchar_t
zugeordnet werden oder verwenden (siehe die folgende Tabelle):
Werte von '_TCHAR entspricht':
char |
_TCHAR ersetzt char .
|
wchar_t |
|
So legen Sie die Option '_TCHAR entspricht' auf die Seite Verzeichnisse und Bediengungen fest:
Verwenden Sie das Dialogfeld Projekt > Optionen > Verzeichnisse und Bedingungen.
Verwendung von '_TCHAR entspricht' wchar_t
für RAD Studio-Frameworks und -Bibliotheken
RAD Studio-Frameworks und -Bibliotheken sind in Unicode implementiert und erwarten immer Unicode. Standardmäßig wird _TCHAR wchar_t
zugeordnet.
Beispielsweise kann der folgende Code erst compiliert werden, wenn Sie die Option '_TCHAR enspricht' auf wchar_t
gesetzt haben:
TResourceStream* res = new TResourceStream(HInstance, ResourceId, RT_RCDATA);
Wenn die Option '_TCHAR entspricht' auf char gesetzt ist, wird RT_RCDATA
zu char*
zugeordnet.
RAD Studio-Frameworks und -Bibliotheken erwarten wchar_t*
und deshalb ist das Setzen von char ein Problem, wenn Sie mit RAD Studio-Frameworks und -Bibliotheken arbeiten möchten.
Erforderliche Codeänderungen für '_TCHAR entspricht' wchar_t
Wenn _TCHAR auf wchar_t
(Standardeinstellung) gesetzt ist, muss Ihr Projekt einen Einsprungspunkt namens _tmain
oder _tWinMain
haben. Neue mit C++Builder erstellte Projekte enthalten standardmäßig diese Einsprungspunkte, aber bei importierten Projekten müssen Sie sie eventuell manuell hinzufügen.
Sie müssen auch die Header-Datei tchar.h einbeziehen, die die Floating-Definitionen und die erforderlichen Einsprungspunkte enthält. Eine Liste der in tchar.h enthaltenen Floating-Funktionen, finden Sie unter Floating-Funktionen.
Hinweis: Wenn Sie anstelle von
_tmain
als Einsprungspunktmain
verwenden, kann der Linker die ausführbare Datei nicht einbinden. Bei neuen Projekten, die RAD Studio-Frameworks und -Bibliotheken verwenden, fügen die Experten automatisch einen_tmain
-Einsprungspunkt ein.
Verwendung des Makros _TEXT
vor Textliteralen
Mit den Makros _TEXT
oder _T
stellen Sie sicher, dass Zeichen- und String-Literale korrekt in ANSI oder Unicode verwendet werden. Zum Beispiel:
::MessageBox(0, _TEXT("The message"), _TEXT("The caption"), MB_OK);
Wenn _UNICODE definiert ist, übersetzt das Makro _TEXT
(oder _T
) einen literalen String (Zeichen) in die Form mit einem vorangestellten L; ansonsten übersetzt _TEXT
das Literal ohne das Präfix L
. Wenn Sie z.B. _UNICODE definieren, dann wird
_TEXT("The message")
in die Form mit vorangestelltem L übersetzt:
L"The message"
Ansonsten übersetzt dieses Makro in die Form ohne das Präfix L
:
"The message"