C/C++ プリプロセッサ一覧

・ヘッダーファイルをきちんと解析したいのでプリプロセッサを理解する。
C言語 プリプロセッサ (Google検索)
C言語 ヘッダーファイル (Google検索)
C言語 プリプロセッサより


まずは、C言語の標準ライブラリから調べる。特に、stdio.hから調べてみる。

#ifdef
シンボルが定義されているときに#ifdefから#endifまでのプリプロセッサ命令を実行する。これは、if文の条件分岐と一緒ですね。

#ifdef シンボル名
シンボルが定義されているときに実行するプリプロセッサ命令
#endif

#elseを使って、真がダメなら、次の条件を実行するという命令もできます。

#ifdef シンボル名
シンボル名が定義されているときに実行するプリプロセッサ命令
#else
シンボル名が定義されていないときに実行するプリプロセッサ命令
#endif

#pragma
ホストマシンやオペレーティングシステムに固有の機能をサポートする。
例えば、データが置かれるメモリ領域の正確な管理や、バージョン情報をプログラムコードに埋め込んだりします。固有のものなので、コンパイラごとに使用できる機能が異なる。

既定義マクロ
__FILE__ソースファイル名(Windowsはフルパス、Solarisはファイル名のみ)
__LINE__行番号
__DATE__コンパイル日付
__TIME__コンパイル時間
__STDC__ANSI規格対応ならば1、ANSI規格非対応ならば0