FreeBASIC マニュアルのトップに戻る

FreeBASIC CompilerFAQ

目次→FAQ→Frequently Asked Questions←オリジナル・サイト

よく出る質問 左にメニュー・フレームが表示されていない場合は、ここをクリックして下さい

←リンク元に戻る プログラム開発関連に戻る



FreeBASIC についての質問:
- FreeBASIC とは何ですか?
- だれが FreeBASIC に関与していますか?
- なぜ QBasic より FreeBASIC を使う方がよいですか?
- なぜ、他のより新しい BASIC ではなく、FreeBASIC を使った方が良いですか?
- FreeBASIC は、どれくらい速いですか?
- FreeBASIC は、QuickBASIC と、どの程度、互換性がありますか?
- FreeBASIC は、Windows、DOS、Linux で、どの程度、互換性がありますか?
- FreeBASIC は、オブジェクト指向プログラミングをサポートしますか?
- WFB の将来のプランは何ですか ? ToDo リストは ?
- FB で GUI アプリケーションをプログラムできますか?
- FB は、複雑な大きいアプリケーションに適していますか?
- FreeBASIC アプリケーションで、ラテン文字以外を使えますか?★
- FB の Serial/COM と Hardware/CPU ポートを使ってもよいですか?

FreeBASIC を使い始める前の質問
- FreeBASIC に関する詳しい情報は、どこで見つけることができますか?
- FreeBASIC を始動するとき、QB GUI はなぜ開きませんか?
- 関連文書のオフライン版を入手できますか?
- FB 方言の、裏にある考えは何ですか?
- xx より大きい配列を定義すると、なぜプログラムはダウンしますか?
- プログラムが、「-llibname を見つけることができない」のメッセージで、コンパイルできないのはなぜですか?

高度な FreeBASIC
- C ライブラリには、どのようにして、リンクしますか?
- デバッガを使えますか?
- FB と共に含まれている、AS.EXE、AR.EXE、LD.EXE ファイルの目標は何ですか?
- ソース・ファイルの大きさに関して限界がありますか?
- OS を、FreeBASIC で書いてもよいですか?
- 私は OS を開発していて、私の OS に FreeBASIC を移植できますか?
- FreeBASIC は、C++ などのように、関数からの参照を戻すことをサポートしますか?

参照

目次に戻る




FreeBASIC についての質問
FreeBASIC とは何ですか?
FreeBASICは、無料の BASIC コンパイラで、Windows(32ビットおよび64ビット)、32ビットプロテクトモードDOS(DJGPP などの COG 実行可能ファイル)、Linux(x86、x86_64、ARM)で動作します。
これは、マイクロソフト QuickBASIC への、コード互換、そして、無料の代替手段を提供する試みとして始まりました。
しかし、すぐに強力な開発ツールに成長しました。
既に、デフォルトで、Allegro、SDL、OpenGL、その他の多くのライブラリが、インストールされて、サポートされています。

QuickBASIC とほとんど互換性がある構文に加え、FreeBASIC は古い言語にいくつかの新機能を導入します。
変数と関数へのポインタや、符号無しのデータ型を、含んでいます。

FreeBASIC コンパイラは、self-hosting です - つまり、FreeBASIC は、FreeBASIC で書かれています。
しかし、ライブラリは、C で書かれています。

最初に戻る

だれが FreeBASIC に関与していますか?
FreeBASIC の最初のバージョンは、V1ctor 一人だけで開発されました。
後のバージョンは、多くの人々の貢献を受けました。
特に、Lillo は、Linux ポートと描画ライブラリを発展させました。そして、DrV は、DOS ポートを開発しました。

FreeBASIC 著作権者 を参照して下さい。

最初に戻る

なぜ QBasic より FreeBASIC を使う方がよいですか?
FreeBASIC は、QBasic、QuickBASIC、PDS、DOS のための Visual Basic より、無数の利点があります。

最初に戻る

なぜ、他のより新しい BASIC ではなく、FreeBASIC を使った方が良いですか?
FreeBASIC は、他のほとんどの BASIC 言語実現より、FreeBASIC を魅力あるものにする、多くの特色があります:

最初に戻る

FreeBASIC は、どれくらい速いですか?
共同体によって実行されたほとんどのテストで、FreeBASIC が、QuickBASIC よりかなり速いことを示しました。ほとんどの他の GPL や、商業 BASICs より速く、そして、速度に関して、GCC(GNU C Compiler)に、しばしば近づいています。
独立テストチーム Computer Languages Benchmark Game は、Linux のための FreeBASIC に、GNU g++ より、1.8倍遅い速度を、与えました。
テストは、コンソール・プログラムにおける、計算、メモリとディスクへのアクセス速度に関するもので、描画能力は、全くテストされませんでした。
これは、FreeBASIC が、まだ最適化コンパイラではない、と判断するような、悪い結果ではありません。

注目に値する速度不足の、1つの領域は、32ビットのコンソール・モードです。
FreeBASIC は、他の32ビットのコンソール・モード・アプリケーションと、堅実に同等です。
しかし、32ビットのコンソール・モード操作は、QuickBASIC で見られるように、16ビットのコンソール操作より、かなり遅いです。
DOS バージョンでは、いくつかの I/O 操作が、16ビットの BASIC から FB に移植すると、減速します - コードを最適化すると、速度は戻ります。

最初に戻る

FreeBASIC は、QuickBASIC と、どの程度、互換性がありますか?
FreeBASIC の内蔵の描画ライブラリは、QB で多く使われた描画モード(モード7、12、13)を模倣しています。そして、QB で特徴とされた全ての描画基関数を、実装しています。

ほとんどの互換性の問題は、古い QB プログラムでの、8086-DOS-ハードウェア仕様の、低レベル技術の使用から起こります。
VGA ポート・プログラミング、DOS 中断、メモリ・セグメント切替え、画面メモリに poke すること、PC スピーカーを使った音楽演奏は、直接サポートされません。外部のライブラリを使って、それらをサポート、または模倣することは、できますが。
古い QB プログラムを移植する上での他の問題は、以下があります。
変数名が新しい FB キーワードと衝突する、 型接尾辞とQBキーワードの名前を持った変数、 FB では、デフォルト整数サイズは、32ビット、などです。
これらは、コマンド行スイッチ -lang qb で、FreeBASICを実行することで、扱います。

FreeBASIC と QuickBASIC の違い を参照ください。

最初に戻る

FreeBASIC は、Windows、DOS、Linux で、どの程度、互換性がありますか?
FreeBASIC は、Windows、MS-DOS、FreeDOS、Linux で、完全に互換性があります。
すべての、3つのプラットホームのためにプログラムを作ろうと計画しているときは、しかし、API の有用性を覚えておいてください
-- 例えば、OpenGL を利用するコードは、Windows と Linux で働きますが、DOS では働きません。OpenGL は、DOS で利用できないからです。

最初に戻る

FreeBASIC は、オブジェクト指向プログラミングをサポートしますか?
FreeBASIC は、クラス(ユーザ定義型)をサポートします。これは、メンバ関数(メソッド)、静的メソッド、静的メンバ変数、構築子、破壊子、プロパティ、演算子の多重定義、単一継承、仮想メソッドと抽象メソッド(多義性)、および実行時型情報(RTTI)を持ちます。
OOP 機能に関する今後の計画には、多重継承やインタフェースのサポート追加が含まれています。
詳細については、以下を参照下さい: オブジェクトとしての型 入門(1).

最初に戻る

FB の将来のプランは何ですか ? ToDo リストは ?

将来のリリースで計画されている内容については、以下を参照下さい。 fbc's todo.txt.

最初に戻る

FB で GUI アプリケーションをプログラムできますか?
はい、できます。
Windows と Linux の GUI API を呼べるようにするヘッダーは、それぞれのバージョンで提供されます。しかし、この方法で作られたプログラムは、移植できません。

移植可能なプログラミングのために、GTK (GIMP Tool Kit) としてのマルチプラットフォーム GUI ラッパー・ライブラリか、wx-Widgets が使えます。
GTK ヘッダーは、FB で提供されます。しかし、現在 FB で利用できる OOP の機能性は、wx-Widgets の使用を妨げます。
これらのライブラリを使って作られたプログラムは、ユーザに、ラッパー・ライブラリを、システムにインストールするように要求するかもしれません。

ゲームと、小さい描画アプリケーションのために、いくつかの FB-固有のライブラリーがあります。
FB-固有のライブラリーは、ボタンのような単純なコントロールと、描画画面の中の編集ボックスを、描いて、管理します。
これらのライブラリで作られたプログラムは、完全に移植可能です。

参考:FreeBASIC GTK 教本

参考:GTK+ for Windows Runtime Environment
http://sourceforge.jp/projects/sfnet_gtk-win/

参考:GTK v1.2 チュートリアル(日本語版)
http://www.kitanet.ne.jp/~asler/linux/gtk/ja/gtk_tut_ja.html

参考:Howto: Rapid GUI creation with FreeBasic and glade/Gtk
http://www.siebke.com/freebasic/howto_glade_freebasic.pdf

参考:GUI ライブラリ Window9★

最初に戻る

FB は、複雑な大きいアプリケーションに適していますか?
FB コンパイラは、self-hosting です。つまり、FBは、FB それ自体が、FB でプログラムされています。
これは、現在、120 000 行以上のコードで、かなり複雑なアプリケーションであることを意味します。

最初に戻る

FreeBASIC アプリケーションで、ラテン文字以外を使えますか?★

FreeBASIC は、ユニコード・サポートがあります。ユニコード・サポートは、与えられたプラットホームのための C ランタイム・ライブラリによって提供されます。
これは、FB DOS では、ユニコードが使えないことを意味します。
DOS 以外のプラットホームでは、Wstring を使って、必要な文字は全てサポートされます。
ファイル OPEN キーワードには、異なった符号化を考慮する、追加 Encoding パラメタがあります。
FreeBASIC は、これ自体が FB でコード化されています。これは、あなたのソースを、ユニコード・エディタで、コーディングできることを意味します。このため、コメントと文字列直定数は、どんな文字集合でも使うことができます。(変数と手続きのための、キーワード、ラベル、および名前は、ASCII セットの中の文字を使わなければなりません。)

画面への出力については、サポートは、実行画面と描画画面で、異なっています。
実行画面では、非ラテン文字の Wstring 表示は、コンソール・フォントがそれらをサポートするなら、サポートされます。
描画モードは、内部の CP437 文字セット (古いDOS 文字セット) フォントを使います。このため、非ラテン文字の出力は、カスタム・メード・ラスタ・フォントと、DRAW STRING キーワードを、使う必要があります。
第三者ツールで、外部のフォントをつかんで、外部のフォントを DRAW STRING 形式に変換するものが、存在しています。

最初に戻る

FB の Serial/COM と Hardware/CPU ポートを使ってもよいですか?
はい。FB は、外部ライブラリなしで、シリアル/COM ポートと、ハードウェア/CPU ポートに、アクセスするための、組込み関数を持っています。
あなたの OS についての詳細は、OS specific FAQ's を参照下さい。そして、Open ComINPOUT も、参照下さい。

最初に戻る


FreeBASIC を使い始める前の質問
どこで FreeBASIC に関する詳しい情報を見つけることができますか?
FreeBASIC ウィキは、FreeBASIC を使うための、最新のマニュアルです。ここ を参照して下さい。

FreeBASIC に関連する、活動しているフォーラムは、公式フォーラム と、qbasicnewsPete's QB Sitethe FB Games directoryfreebasic-portal.de (ドイツ語) があります。

発刊中の雑誌で、定期的に、FreeBASIC に関連する記事を掲載しているのは、QB ExpressQBXL Magazine です。
これらの雑誌は、いつも新しい記事を探しているので、FreeBASIC に関する記事のために良いアイデアがあるなら、投稿してください!

最初に戻る

FreeBASIC を始動するとき、QB GUI はなぜ開きませんか?
QB には、統合開発環境(IDE)がありました。 FreeBASIC には、IDE が同梱されていません。
FreeBASIC は、ただ、コンパイラで、QuickBASIC の完全なクローンではありせん。
FreeBASIC は、コンソール・モード・アプリケーションです。
FreeBASIC は、コマンドラインで、BAS ファイルを受け入れて、EXE ファイルを吐き出します。

あなたの OS の、最も単純な、プレーン・テキスト・エディタ(メモ帳、EDIT、...)で、BAS ファイルを作成して、次に、コンパイラを実行できます。

構文着色や、エラー着色や、複数ファイルの管理や、統合デバッガや、コンテキスト・ヘルプなどを必要とするなら、IDE を使って下さい。
利用可能な IDE とエディタについて、OS specific FAQ's を参照下さい。

最初に戻る

関連文書のオフライン版を入手できますか?
このオンラインWikiは、FBの公式文書です。
通常、これは、FBの開発バージョンで見つけた最新の改善を織り込んでいます。
この wiki のオフライン版(CHM HTMLおよび他の形式)は、SourceForge の fbc ダウンロードサイトの文書ディレクトリから入手できます。

最初に戻る

FB 方言の、裏にある考えは何ですか?
考えは、QB コードとの、後方互換性を維持しながら、言語として、継続して改良を進められるようにすることです。
QB 構文の曖昧な言葉遣いは、OOP が必要とする、より厳格なスタイルと、互換性がありません。
新しい FB キーワードは、古い QB プログラムの変数名と、しばしば、衝突しました。QB は、変数名と、UDT でない手続きに、ドットを使えました。
3つの方言 (-lang fb、-lang qb、-lang fblite) 指定は、FreeBASIC と QB の 2つの世界のベストを、一体化できるようにします。

詳細は、FreeBASIC の方言 を参照下さい。

最初に戻る

xx より大きい配列を定義すると、なぜプログラムはダウンしますか?

一般に、自動(記憶域クラス) 固定長配列を大きくし過ぎると、これは起こります。これはプログラム・スタックを崩壊させています。
あなたには、下記のオプションがあります:


静的 配列と、可変長 配列は、その要素データに、プログラム・スタックを使いません。このため、自動固定長配列に関連する問題を起こしません。
詳しい情報は、記憶域クラス を参照下さい。

静的 として巨大なバッファを保存したり、デフォルトをはるかに越えるスタック・サイズを増やすことは、あまり良い考えではないということに、注意して下さい。
というのは、これは、プログラムをロードしてスタートするために必要な記憶の固定量を増やすからです。
たとえ、その大部分が後で使用されなくても、パフォーマンスを低下させ、あるいは、プログラムをロードすることを拒否さえするからです。

プログラムが、「-llibname を見つけることができない」のメッセージで、コンパイルできないのはなぜですか?

これは、リンカにより引き起こされたエラーです。
プログラムは #Inclib でプログラム・コードで指定されるか、または -l でコンパイラ・コマンドラインで指定された、外部ライブラリにリンクされています。
しかし、リンカーは、いずれのライブラリ・パスでも一致するファイルを見つけることができませんでした。
ライブラリのホームページを確認して、コンパイルするライブラリをダウンロードする方法を調べて下さい。
また、外部ライブラリ索引 で、ライブラリに関する情報が見つかるか確認してください。
ライブラリの一般的な情報と使い方については、既存のライブラリを使う およびそこにリストされている関連ページを参照してください。

最初に戻る



高度な FreeBASIC


どのようにして、C ライブラリにリンクしますか?
C ライブラリは、それらが C の中にある状態と、ほとんど同じ方法で、FreeBASIC に設定されています。
FreeBASIC に含まれる全てのライブラリは、"library name.bi" という名前の、基本のインクルード・ファイルを持っています。
基本インクルード・ファイルは、ライブラリを含むために、#INCLIB メタコマンドを使います。そして、ライブラリの中で関数を宣言するために、Declare 命令文 を使います。
FreeBASIC は、何百個もの BI ファイルを含んでいます。ライブラリ・ヘッダーの全リストは、ここ で参照ください。

最初に戻る

デバッガを使えますか?
FreeBASIC は、GNU GDB 互換デバッガを使用できます。

あなたの OS のための詳細は、OS specific FAQ's を参照下さい。

最初に戻る

FB と共に含まれている、AS.EXE、AR.EXE、LD.EXE ファイルの目標は何ですか?
AS.EXE は、GAS、"GNU assembler" です。 これは、いつもコンパイルにかかわります。
LD.EXE は、"GNU linker" で、実行ファイルの作成にかかわります。
AR.EXE は、"GNU archiver" で、事実上、ライブラリアンで、.A ライブラリを生成します。

最初に戻る

ソース・ファイルの大きさに関して限界がありますか?
はい。FreeBASIC が完全に32ビットのコンパイラなので、ソースファイル上で、理論的に、4GB か 4294967296バイトまで操作することができます。
しかし、あなたの RAM 容量は、あなたのソースのサイズをかなり越えなければなりません。さもないと、コンパイルは終わらないか、少なくとも非常に遅いです

最初に戻る

FreeBASIC で、OS を書いてもよいですか?

はい、そして、いいえ。
あなたが、本当に、OS を書いて、FB にかかわる、と主張するなら、答えは、「はい」です。
質問が、もし、現在 FB を使って OS をコーディングすることが、名案であるかどうか、ということなら、答えは、「いいえ」です。あなたが、初心者であれば、なおさらです。
いくつかの隠れた危険があります:
FreeBASIC は、GCC を当てにします。そして、C で OS を開発することに関する入手可能な情報は、また、FreeBASIC に適用されます。
FB は、GCC と同程度で、超えることも下回ることもないでしょう。

最初に戻る

私は OS を開発していて、私の OS に FreeBASIC を移植できますか?

状況によります。
あなたの OS が、少なくとも、DPMI32 (コンソールI/O(探知、複数のファイルを開く…)、ファイルI/O、メモリ管理)と共に DOS の機能性を合法化していて、そして、GCC のポートを持っているなら、答えは「はい」です。
あなたが、少なくとも、ライブラリがある、他の何か準拠した C コンパイラを持っていれば、それは可能かもしれません。
例えば、一区画だけでファイルをロードまたは保存する OS、または、16ビットのOSに、FBを、理論的に、移植できません。

最初に戻る

FreeBASIC は、C++ などのように、関数からの参照を戻すことをサポートしますか?

はい、この機能は存在します。
手続は、戻り型の datatype として byref を使って参照を返すことができます。

最初に戻る

参照:
そして

目次に戻る
←リンク元に戻る プログラム開発関連に戻る
ページ歴史:2020-12-28 07:20:07
日本語翻訳:WATANABE Makoto、原文著作者:JasonFirth

ホームページのトップに戻る

表示-非営利-継承