前回に引き続き、C++のプリプロセッサの復習です。前回は#includeと#defineについて記事にしましたが、【まとめ】にも記載の通り、#defineと関連するプリプロセッサは多くあります。defined)」「#undef」について記事にしようと思います。実際の開発でもデバッグなどで活用の幅が広いので、普段から使い方に慣れておくと、人のソースを読み込む際に役立ちます。前回の記事はちょっと雑すぎたので、まずプリプロセッサディレクティブの一覧を示します。まとめプリプロセッサ・ディレクティブ#○○のような形式で記述する命令語をプリプロセッサ・ディレクティブといいます。プリプロセッサ・ディレクティブは、cファイルやcppファイルをコンパイラに渡す前に処理を実行するため、関数などのオーバーヘッドが発生せず有用に使うことができればかなり効果的に動きます。全部で14種類あり、それぞれの簡単な説明を下記に示します。#define識別子とトークン文字列の関連付けを行い、以降コード中に識別子が見つかるたびに指定したトークン文字列と置換を行う。#errorコンパイル時にユーザー指定のエラーメッセージを出力し、コンパイルを終了する。#importタイプライブラリーの組み込みを行う。#undef#defineで作成した識別子を削除します。#ifと#else、もしくは#ifと#endifの間に記述可能。記述でき、条件付きコンパイルに使用します。#includeヘッダーファイルなどのインクルードファイルを組み込みます。#using/clrでコンパイルされたプログラムにメタデータをインポートします。#else#if/#elifと#else、もしくは#if/#elifと#endifの間に記述可能。#ifdef#defineで定義されていればTRUEとなるディレクティブです。#lineコンパイラが管理する行番号およびファイル名を変更します。#endif#ifと対になるディレクティブ。#ifの終わりを示す。#ifndef#defineで定義されていなければTRUEとなるディレクティブです。システム固有のコンパイラ機能を指定します。ディレクティブをコーディングできます。#ifndef#defineディレクティブは「識別子とトークン文字列の関連付けをしたり、マクロを作成できる。」ということは前回お話ししました。1上記のように記述すれば、以降ソースコード内に「DEBUG」を見つけると「1」に置換します。#ifdef#ifdefと#ifndefは、「識別子が#defineによって定義されているか」を判定します。見るコードでは以下のようなものです。"これはDEBUGが定義されていれば出力されます。"デバッグ中に関わらず出力します。"これはDEBUGが定義されていれば出力されます。"デバッグ中に関わらず出力します。std::endl;}このようにデバッグ中は識別子「DEBUG」を定義しておき、確認用のメッセージなどをいれることでデバッグがしやすくなります。#endif」を無視してくれるので余分なコードが生成されることもありません。#ifndef既になんとなく分かっている方も多いかもしれませんが、#ifndefディレクティブは「DEBUGが定義されていなければ~」という判定を行います。"RELEASEが定義されていなければ出力される。"RELEASEが定義されていなければ出力される。#endifを使用するようにされていました。現在は過去のC++との互換性維持のために残されているだけとなっているようですね。新しくコードを作る際に、同様の動作をさせたい場合は以下のように作成するべきです。"DEBUGが定義されていれば出力します。"DEBUGが定義されていれば出力します。"RELEASEが定義されていなければ出力します。"RELEASEが定義されていなければ出力します。std::endl;#endif}まとめMSDNでは#ifとdefined(identifier)を使用するようにと記載されていますが、実際にはまだまだ#ifdef/#ifndefは使われていますし、見る機会もかなり多いと思います。出力先の指定などフォルダー選択のダイアログを表示させたいことがあります。フォルダー選択ダイアログを表示させるためには、SHBrowseForFolder関数を使います。...【C++11】後処理が必要なリソースはスマートポインタを使おうオープンソースのライブラリのソースコードを呼んでいるとC++11で追加されたunique_ptrを使用しているところもちらほらと見られるようになってきています。...【Boost】Boostライブラリの日付を使ってみよう!先日の記事でBoostをインストールできたのでBoostのライブラリを使って遊んでみましょう。インストールを行ったOpenCVライブラリを使ってサンプルプログラムをいくつか作成してみましょう。