C typedef و
توفر لغة C على الكلمات الرئيسيةtypedef و، يمكنك استخدامه لاتخاذ اسما جديدا للنوع.يحدد المثال التاليBYTE المدى هو الأرقام بايت واحد:
typedef unsigned char BYTE;
بعد هذا التعريف نوع، يمكن استخدامه كمعرف بايتغير موقعة نوع شاراختصار، مثل:
BYTE b1, b2;
من الاتفاقية، سيتم تعريف رسملة خطابات من أجل تنبيه المستخدم إلى كتابة اسم رمزي هو اختصار، ولكن يمكنك أيضا استخدام أحرف صغيرة، على النحو التالي:
typedef unsigned char byte;
يمكنك أيضا استخدامtypedef وإلى أنواع البيانات المخصصة لأخذ الاسم الجديد للمستخدم.على سبيل المثال، يمكنك استخدام typedef وهيكل لتحديد نوع البيانات الجديدة، ومن ثم استخدام هذه البيانات نوع جديد لتحديد هيكل المتغيرات مباشرة، على النحو التالي:
#include <stdio.h> #include <string.h> typedef struct Books { char title[50]; char author[50]; char subject[100]; int book_id; } Book; int main( ) { Book book; strcpy( book.title, "C Programming"); strcpy( book.author, "Nuha Ali"); strcpy( book.subject, "C Programming Tutorial"); book.book_id = 6495407; printf( "Book title : %s\n", book.title); printf( "Book author : %s\n", book.author); printf( "Book subject : %s\n", book.subject); printf( "Book book_id : %d\n", book.book_id); return 0; }
عندما يتم ترجمة التعليمات البرمجية أعلاه وتنفيذها، وتنتج النتائج التالية:
Book title : C Programming Book author : Nuha Ali Book subject : C Programming Tutorial Book book_id : 6495407
typedef ومقابل رقم تعريف
يستخدم C# تعريف التوجيه لتحديد اسم مستعار لمجموعة متنوعة من أنواع البيانات، وtypedef وماشابه ذلك، ولكن لديهم الاختلافات التالية:
- typedef وأسماء رمزية فقط لtypedefs،رقم تعريف لا يمكن فقط تحديد نوع الاسم المستعار، ولكن أيضا تحديد اسم مستعار للقيمة، على سبيل المثال، يمكنك تحديد 1 واحد.
- يتم تنفيذtypedef ومن قبل المجمع تفسيرها،ويتم بيان رقم تعريف بها قبل معالجتها من قبل المجمع.
هنا هو أبسط استخدام رقم تعريف:
#include <stdio.h> #define TRUE 1 #define FALSE 0 int main( ) { printf( "Value of TRUE : %d\n", TRUE); printf( "Value of FALSE : %d\n", FALSE); return 0; }
عندما يتم ترجمة التعليمات البرمجية أعلاه وتنفيذها، وتنتج النتائج التالية:
Value of TRUE : 1 Value of FALSE : 0