تعيينات نص عام في Tchar.h

لتبسيط نقل التعليمات البرمجية للاستخدام الدولي، توفر مكتبة وقت تشغيل Microsoft تعيينات نص عام محددة لـ Microsoft- للعديد من أنواع البيانات و الإجراءات و الكائنات الأخرى. يمكنك استخدام هذه التعيينات التي تم تعريفها في Tchar.h ، لكتابة التعليمات البرمجية العامة التي يمكن تحويلها برمجياً إلى مجموعات أحرف من بايت واحد أو من العديد من البايتات أو من أحرف Unicode اعتمادا على ثابت البيان الذي تقوم بتعريفه باستخدام عبارة #define . تعيينات نص عام هي ملحقات Microsoft الغير المتوافقة مع ANSI .

باستخدام Tchar.h يمكنك بناء مجموعة الأحرف من بايت واحدة أو بايتات عديدة (MBCS) أو تطبيقات Unicode من نفس المصادر. يعرّف Tchar.h وحدات الماكرو (التي تكون بادئة بـ _tcs) التي ، مع تعريفات المعالج الأولي الصحيحة ، تتعين إلى دالات str ، _mbs ، أو wcs ، كما هو مناسب. لبناء MBCS ، قم بتعريف الرمز _MBCS. لإنشاء Unicode ، قم بتعريف الرمز _UNICODE. لبناء تطبيق من نوع بايت واحد, لا تقم بتعريف أي منهما (الافتراضي). بشكل افتراضي ، _MBCS معرّفة من أجل تطبيقات MFC.

The _TCHAR نوع بيانات هو defined conditionally في Tchar.h. If the الرمز _UNICODE هو defined for your بنية, _TCHAR هو defined كـ wchar_t; otherwise, for مفرد-بايت و MBCS builds, it هو defined كـ char. (wchar_t ، نوع البيانات " Unicode الأساسية عريضة الحرف" ، هو النسخة الـ 16 بت المطابقة للـ char الـ 8 بت ذى الإشارة.) من أجل التطبيقات الدولية استخدم عائلة الدالات _tcs , التي تعمل في وحدات _TCHAR وليس البايت. على سبيل المثال**_tcsncpy** تنسخ عدد nمن _TCHARs ، وليس عدد n بايت.

لأن بعض الدالات المعالجِة لسلسلة مجموعة الأحرف مفردة البايت (SBCS) تأخذ معلمات char* (ذات الإشارة) ، ينتج تحذير عدم تطابق من المحول البرمجي عند تعريف _MBCS . توجد ثلاث طرق لتجنب هذا التحذير:

  1. استخدام نوع-آمن thunks دالة مضمنة في Tchar.h. وهذا هو السلوك الافتراضي.

  2. استخدم وحدات الماكرو المباشرة في Tchar.h بواسطة تعريف _MB_MAP_DIRECT فى سطر الأوامر. في حالة القيام بذلك، يجب مطابقة أنواع يدوياً. هذا هو الأسلوب الأسرع ولكن ليس آمن النوع.

  3. استخدم the أمان النوع statically linked مكتبة دالة thunks في Tchar.h. إلى do so, define the ثابت _NO_INLINING تشغيل the الأمر خط. هذا هو الأسلوب الأبطأ ولكنه أكثر آمانا للنوع.

توجيهات المعالج الأولى (Preprocessor) بالنسبة لتعيينات النص العام

define #

الإصدار المحول برمجياً‬

المثال

_UNICODE

Unicode (حرف عريض)

_tcsrev تعيين إلى. _wcsrev

_MBCS

حرف عديد البايت

_tcsrev تعيين إلى. _mbsrev

بدون‬ (الافتراضي لا يحتوي على أي من _UNICODE أو _MBCS معرّف)

SBCS ( ASCII)

_tcsrev تعيين إلى. strrev

على سبيل المثال، دالة النص العام _tcsrev ، التي تم تعريفها في Tchar.h ، تتعين إلى _mbsrev إذا قمت بتعريف _MBCS في البرنامج ، أو _wcsrev إذا قمت بتعريف _UNICODE. وإلا, _tcsrev تتعين إلى strrev. تعيينات أنواع البيانات الأخرى متوفرة في Tchar.h للملاءمة البرمجية ولكن _TCHAR يكون أكثر إفادة.

مخططات نوع بيانات نص عام

نص عام

اسم نوع البيانات

& UNICODE_

MBCS_ غير معرّف

MBCS_

معرف

UNICODE_

معرف

_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 أو _TEXT

لا تأثير (تم إزالته بواسطة المعالج الأولى)

لا تأثير (تم إزالته بواسطة المعالج الأولى)

L (يقوم بتحويل الحرف أو السلسلة التالية للنسخة Unicode المطابقة )

للحصول على قائمة تعيينات النص العام للإجراءات و المتغيرات و الكائنات الأخرى, راجع نص عام أعضاء البيانات في مرجع مكتبة وقت التشغيل.

ملاحظة

لا تستخدم عائلة الدالات str مع سلاسل Unicode, التي من المحتمل أن تحتوي على بايتات فارغة مضمنة. وبشكل مماثل، لا تستخدم عائلة الدالات wcs مع سلاسل MBCS (أو SBCS).

توضح أجزاء التعليمات البرمجية التالية استخدام _TCHAR و _tcsrev للتعيين إلى MBCS و Unicode و طرازات SBCS.

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

إذا كان قد تم تعريف _MBCS , يعين المعالج الأولي هذا الجزء إلى هذه التعليمة البرمجية:

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

إذا كان قد تم تعريف _UNICODE , يعين المعالج الأولي هذا الجزء إلى هذه التعليمة البرمجية:

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

إذا لم يكن قد تم تعريف أي من _MBCS أو _UNICODE , يعين المعالج الأولي هذا الجزء إلى تعليمات برمجية ASCII لبايت واحدة, كما يلي:

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

لذلك، يمكنك كتابة و صيانة وتحويل ملف تعليمات برمجية ذي مصدر واحد برمجيا ليتم تشغيله مع إجراءات تختص بأي من الثلاثة الأنواع من مجموعات الأحرف.

راجع أيضًا:

المبادئ

مجموعات الأحرف في ++C

استخدام أنواع بيانات TCHAR.H بإستخدام ‏‫تعليمات MBCS_ برمجية