2013-03-19 17 views
23

için ne ifade eder? "T" ifadesi bir dizede neyi temsil eder. . Aslında işlemci MSDN_T, CString

cevap

20

_T standları olmadan (MBCS dahil) ANSI dizeleri Unicode altında veya Unicode dize olarak derlemek. Eğer kaynaklarınızı Unicode desteğiyle derliyorsanız, editörünüzü Unicode geniş bir karakter haline getirecektir. Bakınız http://msdn.microsoft.com/en-us/library/c426s321.aspx.

+4

Teknik olarak '_T()', '_TCHAR' veri türüyle kullanmak için yalnızca C çalışma zamanı kitaplığı ile kullanılır. Win32 eşdeğeri, 'TCHAR' veri türü ile kullanmak için 'TEXT()' makrosu. Her ikisi de sırasıyla '_UNICODE' ve' UNICODE’un derleme sırasında tanımlanıp tanımlanmadığına bağlı olarak 'char' veya' wchar_t' ile eşleştirilir. Her ikisi de genellikle tanımlanmış/tanımlanmamıştır, bu yüzden birçok kişi bunları değiştirmeye eğilimlidir ve genellikle işler çalışır. Fakat bunlar mantıksal * ayrıdır ve * buna göre tedavi edilmelidir. C fonksiyonları ile '_TCHAR' ve' _T() 'kullanın. Win32 API ile 'TCHAR' ve' TEXT() 'yi kullanın. –

+0

@RemyLebeau: Şimdi zor bir soru: MFC/ATL'nin 'CString' türüyle hangisini kullanacağız? CString, hem CRT hem de Windows API'sı açısından uygulanmaktadır. – IInspectable

+0

Dokümantasyona göre: "*** CString," TCHAR "veri tipini temel alır **. *", Dolayısıyla TEXT() 'yi kullanın. –

10

söyler needed.What Unicode desteği olduğu örnek _T ("Merhaba") ben projelerde bu gördük:

Kullanım _T jenerik edebi dizeleri kodlamak için makro, bu yüzden “metin” için Unicode

8

Aslında Unicode ve ANSI desteğinin gerekli olduğu projeler için kullanılır. Derleyiciye, dizgi hazırlayıcısını, bir precompiler tanımlayıcısının değerine bağlı olarak Unicode veya ANSI olarak derlemesini söyler.

Bunu yapmak istemeniz neden başka bir konudur. Unicode'u tek başına desteklemek istiyorsanız, o zaman Unicode yazın, bu durumda L"Hello". Windows NT ve daha sonra (Unicode desteği) ve Windows 9x/ME (desteklemiyorsa) desteklemeniz gerektiğinde, _T() makrosu eklendi. Bu günlerde, tüm modern Windows sürümleri Unicode tabanlı olduğundan, bu makroları kullanan tüm kodlar geçersizdir.

İlgili konular