#ifndef...#endif
条件付コンパイルを行います。
書式
#ifndef 識別子 .. 条件付コンパイルのためのソースコード
[#else]... 真の条件のためのソースコード
#endif
パラメーター
- 識別子
- ユーザー定義のキーワードです。定義されていないときには、#ifndefから#else、または#endifまでのソースコードがコンパイルされます。この識別子はコンパイルを行うための条件として機能します。
解説
この命令は、「もし定義されていなければ」命令とも呼ばれ、#ifdefとは反対の条件をチェックします。#ifndef...#else...#endifは、選択したソースコードの条件付コンパイルを行います。#elseステートメントは省略可能です。
[定義されている場合] #elseステートメントが使われていれば、#elseと#endifの間のステートメントがコンパイルされます。#elseステートメントが使われていなければ、#ifndefと#endifの間のステートメントはコンパイルされません。
[定義されていない場合] #elseステートメントが使われていれば、#elseと#endifの間のステートメントは、コンパイルされません。#elseステートメントが使われていなければ、#ifndefと#endifの間のステートメントはコンパイルされます。
注意
#ifdefと#ifndefの違い
#ifdefは、識別子が定義されているとき、指定されたソースコードをコンパイルします。一方、#ifndefは、識別子が定義されていないとき、指定されたソースコードをコンパイルします。
参照
#define, #ifdef...#else...#endif
#ifndef使用例
下記は#ifndefを使ったプログラムの一例です。下記の例では、#define NODELAY擬似命令の定義の有無によって、変数A$の値を出力するかしないか制御できます。もし、#define NODELAY擬似命令が、ソース中、ここで例として記載している部分より以前に使われていれば、コンパイルのとき、Wait 1の行は、このプログラムのソースのほかの部分と一緒にコンパイルされません。もし、#define NODELAY擬似命令がここで例として記載している部分より以前に使われていなければ、 (つまり NODELAYは定義されていなければ)Wait 1の行は、コンパイルされて、後にプログラムで実行されます。文字列"The End"は、 #define NODELAY擬似命令にかかわらず、出力されます。
'遅延する場合は次の行をコメント化
#define NODELAY 1
Input #1, A$
#ifndef NODELAY
Wait 1
#endif
Print "The End"