Aracılığıyla paylaş


Genel metin eşleştirme Tchar.h

Uluslararası kullanımda kodun taşınmasını kolaylaştırmak için Microsoft çalıştırma anı kitaplığı Microsoft'a özel bir çok veri türü, yordamlar ve diğer nesneler için genel metin eşlemesi sağlar. #define deyimi kullanarak tanımladığınız bildirim sabitine göre tek bayt, çoklu bayt veya Unicode karakter kümesi için derlenebilen genel kodlar yazmak için Tchar.h'ta tanımlanan eşlemeleri kullanabilirsiniz. Genel metin eşlemeleri ANSI uyumlu olmayan Microsoft uzantılarıdır.

Tchar.h'ı kullanarak aynı kaynaktan tek baytlı, Çok Baytlı Karakter Kümesi (MBCS) ve Unicode uygulamaları oluşturabilirsiniz. Tchar.h, doğru önişlemci tanımlarıyla, uygun olan str, _mbs veya wcs işlevlerine eşleme yapan makrolar (_tcs öneki olan) tanımlar. MBCS oluşturmak için _MBCS sembolünü tanımlayın. Unicode'u oluşturmak için _UNICODE sembolünü tanımlayın. Tek baytlı uygulama oluşturmak için ikisini de tanımlamayın (varsayılan). MFC uygulamaları için _MBCS varsayılan olarak tanımlanmıştır.

_TCHAR veri türü Tchar.h'ta koşullu olarak tanımlanmıştır. _UNICODE sembolü yapınızda tanımlanmışsa, _TCHAR wchar_t olarak tanımlanmıştır, diğer durumlarda, tek baytlı ve MBCS yapılarda, char olarak tanımlanmıştır. (8-bit işaretli char'a karşılık wchar_t, temel Unicode geniş karakter veri türü 16-bittir.) Uluslararası uygulamalar için bayt biriminde olmayan _TCHAR biriminde çalışan _tcs işlev ailesini kullanın. Örneğin, _tcsncpy n bayt yerine n _TCHARs'ı kopyalar.

Bazı Tek Baytlı Karakter Seti (SBCS) dize işleme işlevleri (işaretli) char* parametresi aldığından, _MBCS tanımlandığında tür uyuşmazlığı derleyici uyarısı oluşur. Bu uyarıyı önlemek için üç yol vardır:

  1. Tchar.h'taki tür kullanımı uyumlu satır içi işlev dönüştürücüleri kullanın. Varsayılan davranış budur.

  2. Komut satırında _MB_MAP_DIRECT'i tanımlayarak, Tchar.h'taki aktarmasız makroları kullanın. Bunu yaparsanız, türleri el ile eşleştirmelisiniz. Bu en hızlı yöntemdir fakat tür kullanımı uyumlu değildir.

  3. Tchar.h'taki tür kullanımı uyumlu statik olarak bağlanmış kitaplık işlev dönüştürücüleri kullanın. Bunu yapmak için, komut satırında _NO_INLINING sabitini tanımlayın. Bu en yavaş yöntemdir fakat tür kullanımı uyumluluğu en yüksektir.

Genel Metin Eşlemeleri İçin Önişlemci Yönergeleri

# define

Derlenmiş sürüm

Örnek

_UNICODE

Unicode (geniş karakter)

_tcsrev, _wcsrev'ya eşlenir

_MBCS

Çok baytlı karakter

_tcsrev, _mbsrev'ya eşlenir

Hiçbiri (varsayılanda ne _UNICODE ne de _MBCS tanımlı değildir)

SBCS (ASCII)

_tcsrev, strrev'ya eşlenir

Örneğin, programınızda _MBCS tanımladıysanız Tchar.h'ta tanımlı olan genel metin işlevi _tcsrev _mbsrev'e eşler veya programınızda _UNICODE tanımladıysanız _wcsrev'e eşler. Diğer durumda, _tcsrev'iyi strrev'e eşler. Diğer veri türü eşlemeleri programlama kolaylığı için Tchar.h'ta sunulmuştur fakat _TCHAR en kullanışlı olandır.

Genel Metin Veri Türleri Eşlemeleri

Genel Metin

Veri Türü Adı

_UNICODE &

_MBCS Tanımlanmamış

_MBCS

Tanımlanmış

_UNICODE

Tanımlanmış

_TCHAR

char

char

wchar_t

_TINT

int

unsigned int

wint_t

_TSCHAR

signed char

signed char

wchar_t

_TUCHAR

unsigned char

unsigned char

wchar_t

_TXCHAR

char

unsigned char

wchar_t

_T veya _TEXT

Etkisi yok (önişlemci tarafından kaldırılır)

Etkisi yok (önişlemci tarafından kaldırılır)

L (sonra gelen karakteri veya dizeyi Unicode karşılığına çevirir)

Yordamların, değişkenlerin ve diğer nesnelerin genel metin eşleme listeleri için Çalışma Zamanı Kitaplık Başvurusu'nda bkz. Genel metin eşlemeleri.

Not

str ailesi işlevlerini, gömülü boş bayt bulundurma ihtimali olan Unicode dizeleri ile birlikte kullanmayın.Benzer şekilde, wcs ailesi işlevlerini MBCS (veya SBCS) dizeleriyle birlikte kullanmayın.

Aşağıdaki kod parçası MBCS'ye, Unicode'a ve SBCS modellerine eşleme için _TCHAR ve _tcsrevkullanımını gösterir.

_TCHAR *RetVal, *szString;
RetVal = _tcsrev(szString);

_MBCS tanımlandıysa, önişleyici bu parçayı şu koda eşler:

char *RetVal, *szString;
RetVal = _mbsrev(szString);

_UNICODE tanımlandıysa, önişleyici bu parçayı şu koda eşler:

wchar_t *RetVal, *szString;
RetVal = _wcsrev(szString);

Ne _MBCS ne de _UNICODE tanımlanmadıysa, önişleyici parçayı aşağıdaki gibi tek baytlı ASCII koda eşler:

char *RetVal, *szString;
RetVal = strrev(szString);

Bu nedenle, üç farklı karakter kümesinden herhangi birine özel olan yordamlarla çalıştırmak için tek kaynaklı kod dosyaları yazabilir, sürdürebilir ve derleyebilirsiniz.

Ayrıca bkz.

Kavramlar

Metin ve Visual C++ dizeleri

_MBCS Kodu ile TCHAR.H Veri Türünü Kullanma