コードをコンパイルする前に前処理が行われます。
#ifdef WIN32
#include <something.h>
#elseif LINUX
#include <somethingelse.h>
#endif
実行時ではなくコンパイル時に実行したいヘッダファイルを明示的に含めます。変数でこれを行うことはできません。一方、
一方、C++では、それは良い習慣であると大幅次の例
#define PI 3.141592654
with
const double PI=3.141592654;
のような定数式を交換することを奨励理由は、あなたが適切な型キャストとデータ型の取り扱いを得るということです。
また
#define MAX(x,y) (x) > (y) ? (x) : (y)
あなたはプリプロセッサがでていることを代わる
int i = 5
int max = MAX(i++, 6);
を書くことができますので、非常に良いではありません。
明確に意図を与えるつもりはない
int max = (i++) > (6) ? (i++) : (6);
結果。
代わりに、MAXは関数でなければなりません(マクロではありません)。関数の場合は、パラメータに型を指定することもできます。
私はあらゆる種類の興味深いものに使用されているプリプロセッサを見てきました。言語のキーワード宣言と同様。この場合、読みやすくすることができます。
要するに、条件付きインクルード指示などのコンパイルタイプで発生する必要のあるものに対しては、プリプロセッサを使用します。定数の使用は避けてください。可能な限りマクロを避け、機能を使用する。
これは私を楽しませます。 :) – epochwolf
多くの回答で多くの良い点...これらのすべてを消化する時間がかかります! – Zaid
私はこのコミュニティのwikiにすべきでしょうか? – Zaid