typedef ภาษา C
ภาษาการเขียนโปรแกรม C มีคีย์เวิร์ดที่เรียกว่า typedef ซึ่งคุณสามารถใช้ตั้งชื่อใหม่ให้กับประเภทได้ ต่อไปนี้เป็นตัวอย่างการกำหนดคำ BYTE สำหรับตัวเลขหนึ่งไบต์ −
typedef unsigned char BYTE;
หลังจากคำจำกัดความของประเภทนี้ ตัวระบุ BYTE สามารถใช้เป็นตัวย่อสำหรับชนิดข้อมูล unsigned char, ตัวอย่างเช่น .
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 กับ #define
#define เป็นคำสั่ง C ซึ่งใช้เพื่อกำหนดนามแฝงสำหรับประเภทข้อมูลต่างๆ ที่คล้ายกับ typedef แต่มีความแตกต่างดังต่อไปนี้:
- typedef ถูกจำกัดให้ตั้งชื่อสัญลักษณ์ให้กับประเภทเท่านั้น เนื่องจาก #define สามารถใช้กำหนดนามแฝงสำหรับค่าได้เช่นกัน q. คุณสามารถกำหนด 1 เป็น ONE เป็นต้น
- การตีความ typedef ดำเนินการโดยคอมไพเลอร์ในขณะที่คำสั่ง #define ถูกประมวลผลโดยตัวประมวลผลล่วงหน้า
ตัวอย่างต่อไปนี้แสดงวิธีการใช้ #define ในโปรแกรม −
##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