FreeBASIC CompilerFeatures
BASIC としての互換性
-
FreeBASIC は、「新しい」BASIC言語ではありません。
Microsoft-BASIC のどれかのバージョンを使ったことがあるなら、新しいことを多く学ぶ必要はありません。
QuickBASIC との互換性重視の "-lang qb" か、FreeBASIC としての新機能を使える "-lang fb"(デフォルト) かの、どちらかを選択できます。
"-lang fb" は、QuickBASIC との互換性で、いくつかの制限がありますが、"C" プログラミング言語とは類似性をもたらします。
詳細は、FreeBASIC の方言 を参照下さい。
- FreeBASIC は、大文字と小文字を区別しません。
明示的な "main" 手続きは、必要ありません。
マイクロソフト QuickBASIC で使えた、描画とコンソール命令文および手続きの、大部分は、FreeBASIC に実装されています。
- "-lang qb" を指定した場合のみ:
スカラ変数は、dim 定義する必要はありません。そして、接尾語を使えます。
(スカラとは、ベクトルと対比して使われる用語で、大きさのみを持つ量を言います。質量・時間など。)
行番号を、サポートします。
そして、Gosub をサポートします。
簡潔な構文
- いくつかのキーワードが、追加されています。
すべての手続きは、ライブラリとして、実装されています。このため、ほとんどの部分で、新しい組み込みルーチンはありません。したがって、古いコードで、わずかに、名前が重複する可能性があります。
既存の C ライブラリと API への、薄い結合(ヘッダー・ファイル)
-
ラッパー(あるクラスや関数、データ型などが提供する機能やデータを含み、別の形で提供するもの)や、ヘルパー(アプリケーションが対応していないデータファイルを扱うことで要求元の機能を補完するもの)を必要としません。
移植された ヘッダーファイル(拡張子.bi) を #include するだけで、外部の C ライブラリを、とても簡単に使えます。
- FreeBASIC の公式の配布には、既存の C ライブラリへのいくつかの結合が、含まれています。完全な最新のリストについては、ライブラリ・ヘッダー索引 を参照下さい。
マルチ・プラットフォーム
-
FreeBASIC は、現在、32ビットの Windows、Linux、および DOSの上で走ります。(FreeBASIC とコンパイラー出力は、それ自身32ビットですが、16ビットの DOS で十分に使えます)
また、Xbox コンソールためのアプリケーションも、作成します。
将来は、さらに多くのプラットホームで動くようになるでしょう。
-
ランタイム・ライブラリは、移植性を念頭に置いて、書かれました。
使われているすべての第三者ツールは、ほとんどのオペレーティング・システムで、既に存在しています。これらの第三者ツールは、GNU binutils(バイナリ・ユーティリティ)から来ているからです。
FreeBASIC コンパイラは、100%、FreeBASIC コードで書かれています。すなわち、FreeBASIC は、それ自体をコンパイルします。移植できないツールに依存しないので、単純に起動に組み込むことができます。
ユニコード・サポート
- Unicode エスケープ・シーケンス (\u) がある ASCII ファイルだけでなく、FreeBASIC は、UTF-8、UTF-16LE、UTF-16BE、UTF-32LE、および UTF-32BE のソース (.bas) と、ヘッダー (.bi) ファイルを、構文解析できます。そして、これらのファイルを、自由に、同じプロジェクトの、他のソース/ヘッダーとして、混在させることができます(他の ASCII ファイルとも)。
- 文字定数の文字列に、ローマ字以外の各国語文字も、入力できます。必要なのは、上に記載した Unicode 形式をサポートする、テキスト・エディタを使うだけです。
- Wstring 型は、ワイド文字を格納します。
また、すべての文字列の手続き (Left、Trim など) も、ワイド文字列を扱えます。
- Open は、拡張されていて、Encoding 指定子を使って、UTF-8、UTF-16LE、UTF-32LE ファイルをサポートしています。
Input #、Line Input # も、Print #、Write # も、普通に使えます。そして、必要なら、Unicode と ASCII の変換を、自動的に行います。
- Print も、Unicode 出力をサポートします (要件 を参照ください)。
多数の内蔵データ型
- 整数:
Byte,
Ubyte,
Short,
Ushort,
Integer,
UInteger,
Long,
ULong,
Longint,
Ulongint
- 浮動小数点:
Single,
Double
- 文字列:
固定長、可変長、ヌル終端 (Zstring)、最大長さ 2 GBまで。
- Unicode 文字列 (Wstring) は、ワイド文字をサポートする点を除いて、Zstring と同様です。
直接 Windows Unicode API 手続きなどを、用います。
ユーザ定義型
(UDT)
- 入れ子は、無制限。
-
BASIC の Type 命令文は、新しい Union 命令文と共に、サポートされます。(匿名の入れ子にされた Union も、含みます。)
-
配列項目は、最大8次元まで利用できます。
- 手続きポインタ項目。
- ビット項目。
列挙
(enums)
-
容易に、Enum を使って、連続した値で、定数のリストを宣言できます。
配列
-
固定長、可変長の配列は、2GB までのサイズをサポートします。
-
未知の次元を含む、最大 8 次元の配列まで使えます。
- 下側と、上側の境界は、何でもあり。
- Preserve 指定子を使って Redim すると、可変長の配列サイズを変えても、要素データを、保持できます。
ポインタ
-
ポインタは、上で列挙したデータ型のいずれにも、文字列の文字も、配列の要素も、UDT も、指定できます。
- C と同じ構文を使用します。
-
間接指定レベルは、無制限です (例えば、 ...へのポインタへのポインタ)。
- 手続きポインタ。
-
索引 [] (文字列索引を含みます)。
- 型変換。
変数、オブジェクト、配列の初期化
-
静的、モジュールレベルか局所変数、配列と UDT のために。
デフォルト手続きパラメタ値
-
数値、文字列、および UDT パラメータの型のために。
手続きの多重定義
インライン・アセンブリ
-
インテル構文。
-
変数は、直接名前で参照。
"trick code" は必要ありません。
伝統的なプリ・プロセッサをサポート
-
C と同じ構文。
-
一行マクロは、#Define 命令で、パラメタを含めて、サポートします。
-
複数行マクロは、#Macro 命令でサポートされます。
型の別名
-
C のように前進参照をサポートします。UDT と手続きポインター型でも、使えます。
文字列直定数のための、C 風のエスケープ・シーケンス
-
C と同じです (数が、8進数ではなく、10進数として解釈されることだけが違います)。
デバッグ・サポート
- GDB (GNU デバッガ) か Insight (GDB GUIフロントエンド) を使って、完全なデバッグをサポートします。
-
配列の範囲のチェック (-exx コマンド・ライン・オプションだけで可能です)。
-
ヌル・ポインタをチェック (上と同じです)。
OBJ、LIB、DLL、EXE(コンソール又は GUI) を生成
-
特定の IDE やエディタに、制約されないので、お好みの IDE やエディタを使うことができます。
- コマンドラインのオプション(-lib か -dylib/-dll)を指定するだけで、静的、動的/共有ライブラリを作成できます。
32ビットのアプリケーションとして
-
FreeBASIC は、2 GB までのサイズのソースコード・ファイルを、コンパイルできます。
- 記号 (変数、定数など) の数は、コンパイルする時に利用できる、総記憶域で制限されるだけです。
(例えば、ソースコードに、同時に、OpenGL、GTK/SDL、BASS を入れることができます。)
最適化されたコード生成
- FreeBASIC は、最適化コンパイラではありませんが、多くの種類の一般的な最適化を行い、x86 CPU の上で、できるだけ速いコードを生成します。有償のものを含む他の BASIC の選択肢に、引けをとりません。
完全にフリー
- すべての第三者ツールも、無料です。
廃棄されたり、著作権があるソフトウェアの、どんな断片も使われていません (Win32 の上の GoRC を除いて)。
アセンブラ、リンカ、アーカイバ、および他のコマンドライン・アプリケーションは、GNU バイナリ・ユーティリティ・プログラミング・ツールを使っています。
ページ歴史:2016-02-10 15:45:17
日本語翻訳:WATANABE Makoto、原文著作者:SysOp