typedef در زبان C
در زبان برنامه نویسی C کلمه کلیدی به نام typedef وجود دارد که به منظور تعریف یک نام جدید برای انواع داده موجود استفاده می شود. در مثال زیر عبارت BYTE برای نوع داده unsigned char تعریف شده است:
1 | typedef unsigned char BYTE; |
بعد از تعریف بالا، زمانی که شما از عبارت BYTE استفاده می کنید، کامپایلر آن را معادل unsigned char در نظر می گیرد. در حقیقت یک نام مستعار برای یک نوع خاص تعریف می شود. برای نمونه:
1 | BYTE b1, b2; |
بر اساس قرار داد از حروف بزرگ برای نام جدید استفاده می شود تا به برنامه نویس یاد آوری کند که این نوع داده را خود یا برنامه نویس دیگر تعریف کرده است و یک نام مستعار می باشد. اما شما می توانید از حروف کوچک هم مانند نمونه زیر استفاده کنید:
1 | typedef unsigned char byte; |
شما همچنین می توانید با استفاده از typedef برای نوع هایی که توسط خودتان ایجاد شده اند نیز نام مستعار تعریف کنید. در مثال زیر یک نام مستعار برای ساختار Books تعریف شده است:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #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; } |
زمانی که کد بالا توسط کامپایلر C و اجرا شود، نتیجه زیر را تولید خواهد کرد:
1 2 3 4 | Book title : C Programming Book author : Nuha Ali Book subject : C Programming Tutorial Book book_id : 6495407 |
تفاوت typedef با #define
هر دو دستور به منظور تعریف نام مستعار استفاده می شوند اما تفاوت هایی دارند که در زیر مشاهده می کنید:
- Typedef فقط می تواند برای انواع داده ها نام مستعار تعریف کند اما #define می تواند برای مقادیر هم نام مستعار تعریف کند. برای نمونه ONE برای مقدار 1 تعریف می شود.
- تفسیر typedef توسط کامپایلر انجام می شود، در حالی که دستورات #define توسط پیش پردازنده پردازش می شود.
مثال زیر نحوه استفاده از دستور #define برای تعریف نام مستعار را نشان می دهد:
1 2 3 4 5 6 7 8 | #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; } |
زمانی که کد بالا کامپایل و اجرا شود، نتیجه زیر را تولید خواهد کرد:
1 2 | Value of TRUE : 1 Value of FALSE : 0 |
هیچ نظری ثبت نشده است