C言語におけるtypedefキーワードの役割

2450 ワード

C言語にはtypedefキーワードが用意されており、タイプに新しい名前を付けることができます.次の例では、1バイトタイプについてBYTEという用語を定義します.
typedef unsigned char BYTE;

このタイプ定義の後、識別子BYTEは、例えば、タイプunsigned charの略として使用され得る.
BYTE  b1, b2;

typedefは構造体タイプによく名前を付けます
#include 
#include 

typedef struct Book {
    char *name;
    int id;
} Book;

int main() {
    Book book; // Book         
    book.name = "C  ";
    book.id = 12345;
    printf("    : %s
"
, book.name); printf(" ID : %d
"
, book.id); return 0; }
    : C  
 ID : 12345

typedefと#defineの違い
#defineはC命令であり、typedefと同様に様々なデータ型の別名を定義するためにも使用されますが、以下の点で異なります.
  • typedefはタイプ定義記号名に限定されます.#defineはタイプ定義別名だけでなく、数値定義別名も定義できます.たとえば、1をONEと定義できます.
  • typedefはコンパイラによって解釈され、#define文はプリコンパイラによって処理される.
  • #include 
    
    #define TRUE  1
    #define FALSE 0
    
    int main() {
        printf("TRUE   : %d
    "
    , TRUE); printf("FALSE : %d
    "
    , FALSE); return 0; }
    TRUE   : 1
    FALSE   : 0