コンパイラ方言を設定する、高次コマンド(metacommand)記述
例えば、行番号を付けたコードのように、古い文法のプログラムも、動かせるようにするために使います。
渡辺注:私は、
コントロール指示 よりも、この
メタ・コマンド 表記の方を推奨します。
下位のバージョンでコンパイルする場合は、自動的にコメント 「'」として無視されるので、バージョン違いでソースを修正する必要がないからです。
構文:
'$lang: "lang"
または
パラメタ:
"lang"
設定する方言は、二重引用符で囲んだ、"fb"、"fblite"、"qb"、"deprecated" の内の、いずれか 1 つです。
説明:
コマンドラインで
-forcelang オプションを与えない場合、 ソース・モジュールで、
$lang を記述して、方言を設定することができます。
ソース・モジュールに従って、行われる処理は、多くても、2つの処理です。
最初の処理では、指定された方言が、デフォルト方言(デフォルトで
"fb" か、または、
-lang で
"fb" が選ばれている)以外なら、コンパイラは、次の処理のためにパーサ(parser:構文解析)をリセットして、ソース・モジュールの始めから、コンパイルを再開します。
このメタ・コマンドが、2番目の処理をするとき、指定された方言が新しい現在の方言に合っていなければ、警告を表示します。コンパイルは、続けます。
最初の処理でエラーが発生したら、コンパイラは2番目の処理をしません。
$lang は、複合文、範囲、またはサブルーチンで、使われない場合が有ります。
この場合でも、モジュールレベル・プリプロセッサ文で、入れ子にされるか、またはインクルード・ファイルで使われることがあります。
現在は、この指示を、ソース・モジュールのどこに置かなければならない、という制限はありません。
しかし、これは、将来、変更されるかもしれません。
したがって、ソースの、最初の宣言、定義、または実行文の前に、この指示を置くことを推奨します。
コマンド・ラインで、明示的に
-lang オプションを与えると、この指示は、メタ・コマンドの
-lang オプションより、優先されます。
しかし、コマンドラインで
-forcelang オプションを与えると、この指示は無効になります。
警告が表示され、指示は無視されます。そして、コンパイルは継続します。
-forcelang オプションで、明示的に、
$lang メタ・コマンドを無視させることができます。
$lang メタ・コマンドは、FreeBASICバージョン0.20.0から導入されました。
FB の旧のバージョン、および QuickBASIC は、それをコメントとして扱って、無視します。
例:
'$lang: "qb"
QB との違い:
- FreeBASIC の新しい機能です。
- QB は、'$lang: を、通常のコメントとして扱います。
参照: