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