条件付きコンパイルは、プログラミングの部分の1つで、世界中のプログラマーの知識バンクのほこりまみれの隅にあったものです。それでも、あらゆる言語に対する最も独創的な追加機能の1つです。
これは、C プログラマのために予約されているものですが、freeBASIC の新しいプリ・プロセッサの力で、あなたは今、あなたのプログラムを助けるために、条件付きコンパイルを使うことができます。
プリ・プロセッサは、条件付きコンパイルを使って、コードを生成する方法を、柔軟に変えられるようにします。
次の状況を想定してみて下さい:
プログラムのコードをデバッグするときには、いくつかの変数を出力するために、何らかの付加的なコードを加えます。しかし、最終版では、付加的なコードを取り除きます。
コードは、下のようになるでしょう:
#define DEBUG
#ifdef DEBUG
Print "Debug Value"
#endif 'DEBUG
注意 #endif の後にコメントは必要ありません。ただ、コメントを置くと、分かりやすくなります。
基本的に、上のコードは、
DEBUG が定義されているかどうかを確認するチェックをしています。
DEBUG を持っていれば、
#ifdef...
#endif の間のコードが実行されます。
これは、たわいないことに見えるかもしれませんが、これを使うと驚くべきことができます。
あなたのプログラムの先頭で、一行 (
#define DEBUG) を取り除くだけで、あなたが加えた、すべての'デバッグコード'は、コンパイラに送られません -- プリ・プロセッサはそれを取り除きます。最終の実行可能ファイルの肥大化を減少させます。
'デバッグを on にします
#define DEBUG
'デバッグを off にします
#undef DEBUG
#undef 指示は、何か (この場合は
DEBUG) を、'非定義' にする方法です。
#undef 指示は、厳密には必要ありません。('
#define DEBUG' の行をコメント・アウトするだけで十分です)。しかし、
#undef 指示を入れると、コードを分かりやすくなるし、他の用途もあります:
#ifndef DEBUG
Print "Production Version"
#endif 'DEBUG
最も役に立つ例というわけではありませんが、上は別の
#ifndef 指示の使い方を示しています。
この指示は、シンボルが定義されないとき、コードをコンパイルします。
普通のプログラミング言語のように、else の変形
#else を使うと、条件文の意味を、逆にすることができます:
#ifdef DEBUG
Print "Test Version"
#else
Print "Production Version"
#endif 'DEBUG
もちろん、これには、多くの使い道があります。
コードのデバッグだけに、これを使うと思いますか?
あなたは、実際に、新しいコードの効果や、単に
TESTCODE のような名前を定義して、条件付きコンパイルのためのコードを包含するプリプロセッサー指令を使用する、いくつかのテスト・ルーチンを、チェックすることができます:
#define TESTCODE
#ifdef TESTCODE
BulletRoutine
()
TestFireRoutine
()
#endif
このチュートリアルで紹介できる範囲は限られたものですが、この方法は、専門家によって使われています。
プログラムを作ることで、人生が楽しくなります。
私は私自身のコードで、この方法を使いしました。
このコードが動いていることを確認するために、
ここ ∞でソースを見てください。∞。
Avinash 'aetherFox' Vora
AetherFox∞