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 typedef と同様に、さまざまなデータ型のエイリアスを定義するためにも使用される C ディレクティブです。 ただし、次の違いがあります-
- <リ>
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
C言語