C言語のプリプロセッサコマンドとは?3つの種類と使い方をわかりやすく解説
プリプロセッサとは
プリプロセッサとは、ソースコードがコンパイラに渡される前に処理を行うプログラムのことです。プリプロセッサは、「#」記号で始まるプリプロセッサ指令(ディレクティブ)に従って動作し、コードの前処理を担当します。
プリプロセッサコマンドの3つの種類
C言語のプリプロセッサコマンドは、主に以下の3種類に分類されます。
マクロ置換指令(Macro Substitution Directives)
ファイル取り込み指令(File Inclusion Directives)
コンパイラ制御指令(Compiler Control Directives)
マクロ置換指令
マクロ置換指令は、識別子(identifier)が出現するすべての場所を、あらかじめ定義された文字列へ自動的に置き換える機能です。
マクロを定義するための基本構文は以下の通りです。
#define 識別子 文字列
記述例:
#define PI 3.1415 #define f(x) x * x #undef PI
#define でマクロを定義し、不要になった場合は #undef で定義を解除できます。
サンプルプログラム
以下は、マクロ置換指令を使用したC言語のプログラム例です。
#define wait getch()
main() {
clrscr();
printf("Hello");
wait;
}※ clrscr() や getch() は、Turbo C などの一部の環境でのみ利用できる関数です。
実行結果
上記のプログラムを実行すると、次の出力が得られます。
Hello
ファイル取り込み指令
#include 指令を使用すると、関数やマクロ定義を含む外部ファイルをプログラムに取り込むことができます。
ファイル取り込み指令の構文は以下の通りです。
#include <ファイル名> または #include "ファイル名"
サンプルプログラム
以下は、ファイル取り込み指令を使用したC言語のプログラム例です。
#include <stdio.h>
main() {
printf("Hello");
}実行結果
上記のプログラムを実行すると、次の出力が得られます。
Hello
このプログラムでは、printf() 関数の定義が <stdio.h> ヘッダーファイル内に存在するため、#include でヘッダーを読み込むことで標準出力関数が使えるようになります。
コンパイラ制御指令
C言語のプリプロセッサには「条件付きコンパイル」と呼ばれる強力な機能があります。これにより、プログラム内の特定の行や行のグループを、コンパイル対象に含める(ON)か除外する(OFF)かを切り替えられます。
サンプルプログラム
以下は、#if、#else、#endif などのコンパイラ制御指令を使用したC言語のプログラム例です。
#define LINE 1
#include <stdio.h>
main() {
#ifdef LINE
printf("this is line number one");
#else
printf("This is line number two");
#endif
}実行結果
LINE が定義されているため、#ifdef の条件が真となり、次の出力が得られます。
this is line number one
このように条件付きコンパイルを活用すれば、デバッグ用コードや環境ごとの処理を柔軟に管理できます。
-
C言語の探索アルゴリズム解説|線形探索と二分探索の違いと実装例
探索(サーチ)とは、複数の要素で構成されるリストの中から、目的の「キー」となる要素を見つけ出す処理のことです。 リストの中に指定した要素が存在すれば、その探索は「成功」とみなされます。 指定した要素がリストに存在しなければ、その探索は「失敗(不成功)」となります。 C言語で広く使われている代表的な探索手法は、主に次の2つです。 線形探索(Linear Search/リニアサーチ) 二分探索(Binary Search/バイナリサーチ) 線形探索(Linear Search)とは 線形探索は、リストの先頭から順に要素を1つずつ取り出し、キーと一致するかどうかを確認していく、最も基本的な探
-
Cプログラムを機械語に変換する4つのステップを徹底解説
プログラムの作成と実行の流れプログラムとは、プログラミング言語で記述された一連の命令の集まりです。プログラマーの仕事は、プログラムを作成し、その動作を確認することです。Cプログラムを機械語に変換して実行可能な形にするまでには、次の4つのステップが必要です。プログラムの作成と編集プログラムのコンパイルプログラムのリンクプログラムの実行1. プログラムの作成と編集プログラムの作成には「テキストエディタ」を使用します。テキストエディタを使えば、文字データの入力・修正・保存が自由に行えます。多くの場合、コンパイラには専用のテキストエディタが付属しています。プログラムを書き終えたら、ファイルとしてディス