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その他の拡張