C/C++の#if 0とは

C/C++の#if 0とは

Posted at October 3,2017 12:03 AM
Tag:[C/C++]

C/C++の"#if 0"について調べてみました。

1.はじめに

既存システムのC++のプログラムに、下記の"#if 0"という記述がありました。

#if 0
    // 処理A
#else
    // 処理B
#endif

ビルドすると、どちらが動作するのか分かりません。

ということで、C/C++の"#if 0"について調べてみました。

2.#if 0とは

まず、"#if"ディレクティブはプリプロセッサの1つで、"#if 0"と書くことで判定結果は常に偽となり、処理Aはコンパイル対象にならないことを意味します。

つまり、前述のプログラムをコンパイルすることで、プリプロセッサでプログラムから処理Aが除外され、

    // 処理B

という部分のみがコンパイル対象になります。

ちなみに、"0"を"1"に書き換えて、

#if 1
    // 処理A
#else
    // 処理B
#endif

とすれば、常に処理Aのみがコンパイル対象になります。

処理Aや処理Bの部分のコード量が多い場合、処理を切り替えるコメントアウト代わりに使えそうです。

関連記事
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)