<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=FreeBASIC</id>
	<title>FreeBASIC - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=FreeBASIC"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=FreeBASIC&amp;action=history"/>
	<updated>2026-07-05T09:32:37Z</updated>
	<subtitle>在这个wiki上该页的修订历史</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=FreeBASIC&amp;diff=442347&amp;oldid=prev</id>
		<title>imported&gt;Nullizer：​使用HotCat已移除Category:过程程序设计语言; 已添加Category:过程式编程语言</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=FreeBASIC&amp;diff=442347&amp;oldid=prev"/>
		<updated>2023-12-01T19:18:01Z</updated>

		<summary type="html">&lt;p&gt;使用&lt;a href=&quot;/index.php?title=WP:HOTCAT&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;WP:HOTCAT（页面不存在）&quot;&gt;HotCat&lt;/a&gt;已移除&lt;a href=&quot;/index.php?title=Category:%E8%BF%87%E7%A8%8B%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1%E8%AF%AD%E8%A8%80&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Category:过程程序设计语言（页面不存在）&quot;&gt;Category:过程程序设计语言&lt;/a&gt;; 已添加&lt;a href=&quot;/wiki/Category:%E8%BF%87%E7%A8%8B%E5%BC%8F%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80&quot; title=&quot;Category:过程式编程语言&quot;&gt;Category:过程式编程语言&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{NoteTA|G1=IT}}&lt;br /&gt;
{{Infobox programming language&lt;br /&gt;
|name = FreeBASIC&lt;br /&gt;
|logo = [[File:Fblogo.gif|The FreeBASIC Logo]]&lt;br /&gt;
|paradigm = [[过程式编程|面向过程]] / [[面向对象程序设计|面向对象]]&lt;br /&gt;
|year = 2004&lt;br /&gt;
|designer = Andre Victor&lt;br /&gt;
|developer = [[The FreeBASIC Development Team]]&lt;br /&gt;
|latest_release_version = 1.08.1&lt;br /&gt;
|latest_release_date = {{release date|2021|07|09}}&lt;br /&gt;
|typing = [[类型系统|静态]]&lt;br /&gt;
|implementations =&lt;br /&gt;
|dialects =&lt;br /&gt;
|influenced_by = [[QuickBASIC]]，[[C语言|C]]&lt;br /&gt;
|operating_system = [[DOS]]，[[Linux]]，[[Microsoft Windows]], [[FreeBSD]]&lt;br /&gt;
|license = [[GNU General Public License|GNU GPL]]，[[GNU Lesser General Public License|Standard libraries licensed under the GNU LGPL]]&lt;br /&gt;
|website = http://www.freebasic.net&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;FreeBASIC&amp;#039;&amp;#039;&amp;#039; 是一个 [[BASIC]] 语言的[[编译器]]&amp;lt;ref name=&amp;quot;about&amp;quot;&amp;gt;{{cite web |url=http://freebies.about.com/od/computerfreebies/qt/freebasic.htm |title=FreeBASIC the Successor to QuickBASIC |date= |accessdate=2008-08-17 |author=Lee Seats |publisher=About.com |deadurl=yes |archiveurl=https://web.archive.org/web/20081019112105/http://freebies.about.com/od/computerfreebies/qt/freebasic.htm |archivedate=2008-10-19 }}&amp;lt;/ref&amp;gt;，可运行在[[Microsoft Windows]]、保护模式的[[DOS]]（[[DOS扩展器]]）、[[Linux]]以及[[Xbox]]上。&lt;br /&gt;
&lt;br /&gt;
FreeBASIC通过使用&amp;quot;QB&amp;quot;关键字可以在高级别上支持用[[QBASIC]]编写的[[程序]]。许多用QBASIC写的程序可以在不需任何修改的情况下编译和运行在这个模式下。但是如果使用默认的参数来编译的话，大部分的程序还是要进行一些修改的。&lt;br /&gt;
&lt;br /&gt;
== 特性 ==&lt;br /&gt;
&lt;br /&gt;
=== 平台支持 ===&lt;br /&gt;
FreeBASIC 现在可以运行在64位和32位的 Windows、GNU/Linux，FreeBSD, 以及16位的 DOS系统。也可以为 Xbox 创建应用程序（Xbox 版本目前已不再维护）。运行时库被设计成可移植的。所有第三方工具均使用来自 GNU Binutils。系统上编译器 100% 用 FreeBASIC 代码写成，使得可以简单的自举而不需要依赖太多的不可移植工具。&lt;br /&gt;
&lt;br /&gt;
=== 现代编程语言特性支持 ===&lt;br /&gt;
FreeBASIC作为一种高级编程语言，支持面向过程、面向对象和元编程。&lt;br /&gt;
&lt;br /&gt;
=== 调试支持 ===&lt;br /&gt;
完全支持GDB（GNU 调试器），数组越界检查（只有使用 -exx 命令行选项），[[空指针]]检查（同上）。&lt;br /&gt;
&lt;br /&gt;
=== 图形界面支持 ===&lt;br /&gt;
该项目提供了与常见程序库的简单的绑定，比如：C 运行时库、Allegro、SDL、OpenGL、GTK+、Windows API等，同时也提供了一些示例程序。&lt;br /&gt;
&lt;br /&gt;
它使用[[GNU Binutils]][[软件开发工具]]作为[[后端]]，除了动态和静态[[库]]，还可以制作控制台和图形／[[GUI]]可执行文件。FreeBASIC完全支持[[C语言|C]]库和部分[[C++]]库。这使得程序员可以使用和创建C和许多其他语言的库。&lt;br /&gt;
&lt;br /&gt;
FreeBASIC还不是一个[[优化编译器]]，但是它的速度被认为接近主流工具，如[[GCC]]&amp;lt;ref&amp;gt;{{cite web |title=The Computer Language Benchamarks Game FreeBASIC vs.gcc |url=http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&amp;amp;lang=fbasic |accessdate=2008-04-28 |format= |work= |deadurl=yes |archiveurl=https://web.archive.org/web/20080412041709/http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&amp;amp;lang=fbasic |archivedate=2008-04-12 }}&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
== 语法 ==&lt;br /&gt;
FreeBASIC语法试图尽量保持接近[[BASIC]]语法，特别是[[QuickBASIC]]。虽然语法上试图保持与其前辈一致，FreeBASIC还是遵循了一些现代的标准和编码实现。具有标准的过程特性以及[[面向对象]]特性，如[[对象 (计算机科学)|对象]]、[[运算符重载]]、[[函数重载]]和[[命名空间]]等等，已经被加入到FreeBASIC中。&lt;br /&gt;
&lt;br /&gt;
FreeBASIC的行在遇到[[行尾]]字符或[[冒号]]时结束。因此不需要使用特殊字符（如[[C语言]]中的[[分号]]）来通知编译器此行结束。多条语句可以通过冒号&amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt;分割写在一行里。&lt;br /&gt;
&lt;br /&gt;
FreeBASIC支持块[[注释]]和行尾注释。整行注释使用一个[[撇号]]&amp;lt;code&amp;gt;&amp;#039;&amp;lt;/code&amp;gt;，块注释从&amp;lt;code&amp;gt;/&amp;#039;&amp;lt;/code&amp;gt;开始，到&amp;lt;code&amp;gt;&amp;#039;/&amp;lt;/code&amp;gt;结束。&lt;br /&gt;
&lt;br /&gt;
=== 兼容性 ===&lt;br /&gt;
FreeBASIC继承自[[QuickBASIC]]&amp;lt;ref name =&amp;quot;about&amp;quot;/&amp;gt;。为了使FreeBASIC与现代的工具兼容并且具有高级编程特性，在开发FreeBASIC的时候还是进行了一些修改的。而&amp;#039;&amp;#039;-lang&amp;#039;&amp;#039;选项的设置使得FreeBASIC编译器也能够适应[[GCC]]和QuickBASIC兼容语言。&lt;br /&gt;
&lt;br /&gt;
* 当选择FB语言设置时（[[命令行参数]]为&amp;#039;&amp;#039;-lang fb&amp;#039;&amp;#039;），将开启所有的FreeBASIC新特性，并且不允许使用QuickBASIC的&amp;quot;hackish&amp;quot;特性（该特性不符合现代编程实践）。&lt;br /&gt;
&lt;br /&gt;
* FB-Lite语言设置（&amp;#039;&amp;#039;-lang fblite&amp;#039;&amp;#039;）提供了访问大多数FreeBASIC中新的非面向对象的特性，但是允许使用与老版本BASIC类似的代码风格。语法规则，如允许隐变量、后缀、&amp;lt;code&amp;gt;[[GOSUB]]&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;RETURN&amp;lt;/code&amp;gt;、[[行号]]等等。&lt;br /&gt;
&lt;br /&gt;
* QB语言设置（&amp;#039;&amp;#039;-lang qb&amp;#039;&amp;#039;）与&amp;#039;&amp;#039;-lang fblite&amp;#039;&amp;#039;类似，但是它更专注于复制[[QBASIC]]式的行为。&amp;#039;&amp;#039;-lang qb&amp;#039;&amp;#039;被设计用来使为QBASIC写的程序能够更容易地运行，在有的情况下&amp;#039;&amp;#039;-lang fblite&amp;#039;&amp;#039;的兼容性不够好，这时&amp;#039;&amp;#039;-lang qb&amp;#039;&amp;#039;就会很有用。&lt;br /&gt;
&lt;br /&gt;
=== 示例代码 ===&lt;br /&gt;
和QBasic一样，在屏幕上写入一行文本的程序可以写成如下的简单语句：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;freebasic&amp;quot;&amp;gt;&lt;br /&gt;
Print &amp;quot;Hello, World!&amp;quot;&lt;br /&gt;
Sleep&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
而且也加入一些面向对象的性质，例如动态连接库，运算符重载，以下是面向对象的例子代码：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;freebasic&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/&amp;#039;A Vector motion class&amp;#039;/&lt;br /&gt;
Type Vector&lt;br /&gt;
	W as Integer&lt;br /&gt;
	H as Integer&lt;br /&gt;
	Declare Constructor (nW as Integer, nH as Integer)&lt;br /&gt;
End Type&lt;br /&gt;
 &lt;br /&gt;
Constructor Vector (nW as Integer, nH as Integer)&lt;br /&gt;
	W = nW&lt;br /&gt;
	H = nH&lt;br /&gt;
End Constructor&lt;br /&gt;
 &lt;br /&gt;
/&amp;#039;Create an object class&amp;#039;/&lt;br /&gt;
Type Object&lt;br /&gt;
	Private:&lt;br /&gt;
		X as Integer&lt;br /&gt;
		Y as Integer&lt;br /&gt;
		Movement as Vector Pointer&lt;br /&gt;
	Public:&lt;br /&gt;
		/&amp;#039;Create public methods, including a destructor for automated cleanup&amp;#039;/&lt;br /&gt;
		Declare Constructor (nX as Integer, nY as Integer)&lt;br /&gt;
		Declare Destructor ()&lt;br /&gt;
		Declare Sub SetMotion (Motion as Vector Pointer)&lt;br /&gt;
		Declare Sub Move ()&lt;br /&gt;
		Declare Property GetX as Integer&lt;br /&gt;
End Type&lt;br /&gt;
 &lt;br /&gt;
/&amp;#039;Set initial coordinates&amp;#039;/&lt;br /&gt;
Constructor Object (nX as Integer, nY as Integer)&lt;br /&gt;
	X = nX&lt;br /&gt;
	Y = nY&lt;br /&gt;
End Constructor&lt;br /&gt;
 &lt;br /&gt;
/&amp;#039;Clean up allocated memory&amp;#039;/&lt;br /&gt;
Destructor Object ()&lt;br /&gt;
	delete Movement&lt;br /&gt;
End Destructor&lt;br /&gt;
 &lt;br /&gt;
/&amp;#039;Set the motion Vector&amp;#039;/&lt;br /&gt;
Sub Object.SetMotion (Motion as Vector Pointer)&lt;br /&gt;
	Movement = Motion&lt;br /&gt;
End Sub&lt;br /&gt;
 &lt;br /&gt;
/&amp;#039;Move the object based on its motion Vector&amp;#039;/&lt;br /&gt;
Sub Object.Move ()&lt;br /&gt;
	X += Movement-&amp;gt;W&lt;br /&gt;
	Y += Movement-&amp;gt;H&lt;br /&gt;
End Sub&lt;br /&gt;
 &lt;br /&gt;
/&amp;#039;A getter for X, as it&amp;#039;s private&amp;#039;/&lt;br /&gt;
Property Object.GetX as Integer&lt;br /&gt;
	Return X&lt;br /&gt;
End Property&lt;br /&gt;
 &lt;br /&gt;
	/&amp;#039;MAIN CODE&amp;#039;/&lt;br /&gt;
 &lt;br /&gt;
/&amp;#039;Create a new instance of Object at coordinates 100, 100&amp;#039;/&lt;br /&gt;
Dim Player as Object = Type&amp;lt;Object&amp;gt;(100, 100)&lt;br /&gt;
 &lt;br /&gt;
/&amp;#039;Dynamically allocate a new Vector object&lt;br /&gt;
moving left 10 units and down 5&amp;#039;/&lt;br /&gt;
Player.SetMotion(new Vector (-10, 5))&lt;br /&gt;
 &lt;br /&gt;
/&amp;#039;Make the Player update its location&amp;#039;/&lt;br /&gt;
Player.Move()&lt;br /&gt;
 &lt;br /&gt;
/&amp;#039;Display new X, 90&amp;#039;/&lt;br /&gt;
Print Player.GetX&lt;br /&gt;
 &lt;br /&gt;
/&amp;#039;Because Player is a local variable, it&amp;#039;s destructor is&lt;br /&gt;
called at the end of scope automatically&amp;#039;/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 图形库 ==&lt;br /&gt;
FreeBASIC拥有一个内置的2D软件[[图形库]]，与QuickBASIC兼容，为用户提供了简单的图形元素（如矩形，线和圆）、[[位块传输]]以及一些QuickBASIC的图形库中没有的附加特性。图形库本身并不依赖于操作系统，因此可以跨平台使用。&lt;br /&gt;
&lt;br /&gt;
虽然图形库是内置的，但是只有在选择使用时才会被包含，这可以简单地通过调用FBgfx &amp;lt;code&amp;gt;SCREEN&amp;lt;/code&amp;gt;命令来实现。通用库（如[[OpenGL]]+）为了[[硬件加速]]使用[[API]]（Windows、Linux等）来创建一个[[窗口]]可以不包含FreeBASIC的图形库。&lt;br /&gt;
&lt;br /&gt;
== 未来的开发 ==&lt;br /&gt;
FreeBASIC仍然继续开发，目标是成为一个[[GCC]]前端&amp;lt;ref&amp;gt;{{cite web |title=FreeBASIC Todo List on Sourceforge |url=http://fbc.svn.sourceforge.net/viewvc/fbc/trunk/FreeBASIC/src/compiler/TODO.txt?view=markup |accessdate=2007-07-31 |format= |work= }}{{dead link|date=2017年11月 |bot=InternetArchiveBot |fix-attempted=yes }}&amp;lt;/ref&amp;gt;，这将带来许多[[C++]]和其他[[面向对象编程语言]]中的新特性，高级[[优化]]技术，以及可以移植到任何现代系统上的能力。&lt;br /&gt;
&lt;br /&gt;
0.17版中已经加入了面向对象程序设计的[[类 (计算机科学)|类]]，扩展了基本的[[数据类型]]。还有更多的新特性值得期待。&lt;br /&gt;
&lt;br /&gt;
== 参考 ==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
{{portal|Free software|Free Software Portal Logo.svg}}&lt;br /&gt;
&lt;br /&gt;
== 外部链接 ==&lt;br /&gt;
*[http://www.freebasic.net/ FreeBASIC官方网站]{{Wayback|url=http://www.freebasic.net/ |date=20060613035225 }}&lt;br /&gt;
*[http://www.freebasic.net/wiki/wikka.php?wakka=DocToc FreeBASIC官方文档]{{Wayback|url=http://www.freebasic.net/wiki/wikka.php?wakka=DocToc |date=20161020202158 }}&lt;br /&gt;
*[https://web.archive.org/web/20060613035225/http://www.freebasic.net/forum/ FreeBASIC官方论坛]&lt;br /&gt;
*[http://sourceforge.net/projects/fbc/ FreeBASIC 托管在 SourceForge 的页面]{{Wayback|url=http://sourceforge.net/projects/fbc/ |date=20080725105728 }}&lt;br /&gt;
*[http://www.freebasic.net/wiki/ FreeBASIC wiki]{{Wayback|url=http://www.freebasic.net/wiki/ |date=20080820214753 }}&lt;br /&gt;
&lt;br /&gt;
{{BASIC}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASIC编译器]]&lt;br /&gt;
[[Category:自由編譯器與直譯器]]&lt;br /&gt;
[[Category:SourceForge專案]]&lt;br /&gt;
[[Category:面向对象的编程语言]]&lt;br /&gt;
[[Category:过程式编程语言]]&lt;br /&gt;
[[Category:自由發展元件與函式庫]]&lt;br /&gt;
[[Category:自托管软件]]&lt;br /&gt;
[[Category:带有BASIC代码示例的条目]]&lt;br /&gt;
[[Category:2004年建立的程式語言]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Nullizer</name></author>
	</entry>
</feed>