Cprogramming-c-typedef
提供:Dev Guides
C-typedef
Cプログラミング言語には、 typedef というキーワードが用意されており、これを使用してタイプに新しい名前を付けることができます。 以下は、1バイトの数字に対して用語 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 vs #define
#define *は、 *typedef に似ていますが以下の違いがあるさまざまなデータ型のエイリアスを定義するためにも使用されるCディレクティブです-
- typedef は、*#define *を使用して値のエイリアスも定義できる場合にのみ、型にシンボル名を付けることに制限されています。q。、1などを1として定義できます。
- 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