25.4 まとめ

プリプロセッサ

コンパイルされる以前にソースに自動的に施される処理をプリプロセス( 前処理)という。#include もプリプロセスの機能の一つであった。

#define 文
    #define  マクロ定義名  [値]
によって、これ以降マクロ定義名で参照したものはプリプロセッサに よって値に置き換えられる。

    #define マクロ定義名(引数並び)  引数を含む文字列

引数を含んだ置き換え機能であるが、副作用などがある点に注意が必要。 引数は括弧で囲んだ上に、引数を含む文字列自体も括弧で囲むのが安全だが、 それでも回避出来ない問題もある。

#ifdef #else #endif文

C の if とほぼ同じ意味であるが、マクロ定義がされていれば真となる。

    #ifdef マクロ定義
    ...
    #else
    ...
    #endif

逆の意味で #ifndef は定義されていなければ真である。

#if #else #endif文

より一般の #if 文も用意されている。

cpp コマンド

プリプロセッサのコマンドは通常 cc から自動的に呼び出されるが、 cpp コマンドを使って明示的に呼び出すことも出来る。



最初のページ 戻る 次へ 最後のページ 目次
Hiroyasu Asami