typedef VS#define-C言語のキーワードとC命令
Typedef Vs Define Keywords
******************************************* typedef ****** ************************************************** *********
************************************************** ************************************************** ****************
C言語は提供しますtypedefキーワード。これを使用して、タイプに新しい名前を付けることができます。
#include #include typedef struct Books { char title[50] char author[50] char subject[100] int book_id } Book int main( ) { Book book strcpy( book.title, 'C Tutorial') strcpy( book.author, 'Runoob') strcpy( book.subject, 'programming language') book.book_id = 12345 printf( 'Book Title: %s
', book.title) printf( 'Book Author: %s
', book.author) printf( 'Book category: %s
', book.subject) printf( 'Book ID: %d
', book.book_id) return 0 }
このタイプを定義した後、識別子BYTEをタイプとして使用できます。 unsigned char たとえば、の略語:
#include #define TRUE 1 #define FALSE 0 int main( ) { printf( 'TRUE value: %d
', TRUE) printf( 'FALSE value: %d
', FALSE) return 0 }
使用することもできますtypedefに来て ユーザー定義のデータ型 新しい名前を取ります。たとえば、typedefを使用して構造を定義できます 新しいデータ型名 そしてこれを使う 新しいデータ型 来て 構造変数を直接定義する 、次のように:
typedef unsigned char BYTE
************************************************** **************** ********************************** **************** **********
************************************************** ************************************************** ****************
#defineさまざまなデータ型のエイリアスを定義するために使用されるCコマンドであり、typedef似ていますが、以下の点で異なります
BYTE b1, b2
説明:
ここで、TRUEは、1に置き換えられるシンボルとして定義されています。trueの代わりにTRUEを使用する理由は、C言語に共通の規則があるためです。#defineステートメントの式はすべて大文字です。
******************************************* typedef VS #define *** *********************************************
************************************************** ************************************************** ****************
#defineさまざまなデータ型のエイリアスを定義するために使用されるCコマンドであり、typedef同様ですが、次の点で異なります。
- typedef タイプのシンボリック名の定義のみに限定され、 #define タイプだけでなく値にもエイリアスを定義できます。たとえば、1をONEとして定義できます。
- typedef コンパイラによって解釈され、 #define ステートメントはプリコンパイラーによって処理されます。