C言語typedef:カスタム型名でコードをシンプルに
typedefとは
Cプログラミング言語にはtypedefというキーワードがあり、これを使って型に新しい名前を付けることができます。1バイト数値のBYTEという用語を定義する例:
typedef unsigned char BYTE;
この型定義後、識別子BYTEは型unsigned charの省略形として使用できます。例:
BYTE b1, b2;
慣習的に、これらの定義には大文字を使用し、型名が実際にはシンボリックな略称であることをユーザーに認識させますが、小文字も使用可能です:
typedef unsigned char byte;
typedefを使用して、ユーザー定義データ型に名前を付けることもできます。例えば、構造体とtypedefを組み合わせて新しいデータ型を定義し、そのデータ型を使って構造体変数を直接定義できます:
Live Demo#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はCディレクティブで、typedefと同様に様々なデータ型のエイリアスを定義するためにも使用されますが、以下の違いがあります:
- typedefは型にシンボリック名を付けることに限定されるのに対し、#defineは値のエイリアス定義にも使用可能(例:1をONEとして定義など)。
- typedefの解釈はコンパイラによって行われるのに対し、#define文はプリプロセッサによって処理されます。
#defineをプログラムで使用する例:
Live Demo#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言語
- 世界レベル製造・維持管理のためのリーンマシン:設備エクセレンス実践ガイド
- ISA、制御システム安全評価・信頼性の第3版を発行
- 新刊『OEEプライマー』:設備総合効率、信頼性、保全性をマスターする
- 2021年 コーディングスキルを飛躍させる厳選17冊のプログラミング本
- 書評:『Digitise or Die』——IoT駆動トランスフォーメーションの青写真
- 破壊的テクノロジー時代に人間らしさを保つには
- C# Hello World – 初めてのC#アプリケーション構築
- C# キーワードと識別子:ルール、一覧、ベストプラクティス完全ガイド
- C言語構造体:複雑なデータを効率的に整理
- C言語typedef:カスタム型名でコードをシンプルに
- C++データ構造:配列、構造体、ポインタで効率的なプログラムを構築