マクロと C++

C++ にはいくつかの新機能がありますが、その一部は ANSI C プリプロセッサが提供する機能に代替します。 これらの新機能によって、次のように言語のタイプ セーフと予測可能性が向上します。

  • C++ では、const として宣言されたオブジェクトを定数式で使用できます。 これにより、プログラムでは型と値の情報を持つ定数を宣言できます。 デバッガーによって記号で表示できる列挙体を宣言できます。 プリプロセッサの #define ディレクティブを使用して定数を定義する場合、あまり正確ではなく、タイプ セーフではありません。 アドレスを取得する式がプログラムに含まれない場合、const オブジェクトに記憶領域が割り当てられません。

  • C++ のインライン関数の機能が、関数型マクロに代わって提供されています。 マクロよりもインライン関数を使用することの利点は次のとおりです。

    • インライン関数はタイプ セーフです。 インライン関数には、通常の関数と同じ型チェックが実行されます。 マクロはタイプ セーフではありません。

    • インライン関数では、副作用のある引数の処理が修正されます。 インライン関数は、関数本体を入力する前に、引数として渡された式を評価します。 したがって、副作用のある式が安全でない状態のまま使用される可能性はありません。

インライン関数の詳細については、「inline、__inline、__forceinline」を参照してください。

下位互換性を維持するため、ANSI C と以前の C++ 仕様にあるすべてのプリプロセッサ機能は Microsoft C++ で保持されています。

関連項目

定義済みマクロ
マクロ (C/C++)