C typedef

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 チュートリアル"); strcpy( book.author, "サンプル"); strcpy( book.subject, "プログラミング言語"); book.book_id = 12345; printf( "本のタイトル : %s\n", book.title); printf( "本の著者 : %s\n", book.author); printf( "本のカテゴリ : %s\n", book.subject); printf( "本のID : %d\n", book.book_id); return 0; }

上記のコードがコンパイルおよび実行されると、次の結果が生成されます:

书标题 : C 教程
书作者 : サンプル
书类目 : 编程语言
书 ID : 12345

typedef vs #define

#defineはCディレクティブであり、さまざまなデータ型のエイリアスを定義するために使用され、typedefに類似していますが、それらには次のようないくつかの違いがあります:

  • typedef型にシンボル名を定義することにのみ限定され、#define型にエイリアスを定義できるだけでなく、数値にもエイリアスを定義できます。例えば、1をONEと定義できます。
  • typedefはコンパイラによって解釈実行され、#defineステートメントはプリプロセッサによって処理されます。

以下は#defineの最も簡単な使用方法です:

例

#include <stdio.h> #define TRUE 1 #define FALSE 0 int main( ) { printf( "TRUEの値: %d\n", TRUE); printf( "FALSEの値: %d\n", FALSE); return 0; }

上記のコードがコンパイルおよび実行されると、次の結果が生成されます:

TRUE 的值: 1
FALSE 的值: 0
その他の拡張