fbpx
维基百科

FreeBASIC

FreeBASIC 是一个 BASIC 语言的编译器[2],可运行在Microsoft Windows、保护模式的DOSDOS扩展器)、Linux以及Xbox上。

FreeBASIC
编程范型面向过程 / 面向对象
設計者Andre Victor
實作者The FreeBASIC Development Team
发行时间2004
目前版本
  • 1.09.0 (2022年1月1日)[1]
型態系統静态
操作系统DOSLinuxMicrosoft Windows, FreeBSD
許可證GNU GPLStandard libraries licensed under the GNU LGPL
網站http://www.freebasic.net
啟發語言
QuickBASICC

FreeBASIC通过使用"QB"关键字可以在高级别上支持用QBASIC编写的程序。许多用QBASIC写的程序可以在不需任何修改的情况下编译和运行在这个模式下。但是如果使用默认的参数来编译的话,大部分的程序还是要进行一些修改的。

特性

平台支持

FreeBASIC 现在可以运行在64位和32位的 Windows、GNU/Linux,以及16位的 DOS系统。也可以为 Xbox 创建应用程序。越来越多的平台将会被支持。运行时库被设计成可移植的。所有第三方工具均使用来自 GNU Binutils。系统上编译器 100% 用 FreeBASIC 代码写成,使得可以简单的自举而不需要依赖太多的不可移植工具。

现代编程语言特性支持

FreeBASIC作为一种高级编程语言,支持面向过程、面向对象和元编程。

调试支持

完全支持GDB(GNU 调试器),数组越界检查(只有使用 -exx 命令行选项),空指针检查(同上)。

图形界面支持

该项目提供了与常见程序库的简单的绑定,比如:C 运行时库、Allegro、SDL、OpenGL、GTK+、Windows API等,同时也提供了一些示例程序。

它使用GNU Binutils软件开发工具作为后端,除了动态和静态,还可以制作控制台和图形/GUI可执行文件。FreeBASIC完全支持C库和部分C++库。这使得程序员可以使用和创建C和许多其他语言的库。

FreeBASIC还不是一个优化编译器,但是它的速度被认为接近主流工具,如GCC[3]

语法

FreeBASIC语法试图尽量保持接近BASIC语法,特别是QuickBASIC。虽然语法上试图保持与其前辈一致,FreeBASIC还是遵循了一些现代的标准和编码实现。具有标准的过程特性以及面向对象特性,如对象运算符重载函数重载命名空间等等,已经被加入到FreeBASIC中。

FreeBASIC的行在遇到行尾字符或冒号时结束。因此不需要使用特殊字符(如C语言中的分号)来通知编译器此行结束。多条语句可以通过冒号:分割写在一行里。

FreeBASIC支持块注释和行尾注释。整行注释使用一个撇号',块注释从/'开始,到'/结束。

兼容性

FreeBASIC继承自QuickBASIC[2]。为了使FreeBASIC与现代的工具兼容并且具有高级编程特性,在开发FreeBASIC的时候还是进行了一些修改的。而-lang选项的设置使得FreeBASIC编译器也能够适应GCC和QuickBASIC兼容语言。

  • 当选择FB语言设置时(命令行参数-lang fb),将开启所有的FreeBASIC新特性,并且不允许使用QuickBASIC的"hackish"特性(该特性不符合现代编程实践)。
  • FB-Lite语言设置(-lang fblite)提供了访问大多数FreeBASIC中新的非面向对象的特性,但是允许使用与老版本BASIC类似的代码风格。语法规则,如允许隐变量、后缀、GOSUB / RETURN行号等等。
  • QB语言设置(-lang qb)与-lang fblite类似,但是它更专注于复制QBASIC式的行为。-lang qb被设计用来使为QBASIC写的程序能够更容易地运行,在有的情况下-lang fblite的兼容性不够好,这时-lang qb就会很有用。

示例代码

和QBasic一样,在屏幕上写入一行文本的程序可以写成如下的简单语句:

Print "Hello, World!" Sleep 

而且也加入一些面向对象的性质,例如动态连接库,运算符重载,以下是面向对象的例子代码:

/'A Vector motion class'/ Type Vector  W as Integer  H as Integer  Declare Constructor (nW as Integer, nH as Integer) End Type   Constructor Vector (nW as Integer, nH as Integer)  W = nW  H = nH End Constructor   /'Create an object class'/ Type Object  Private:  X as Integer  Y as Integer  Movement as Vector Pointer  Public:  /'Create public methods, including a destructor for automated cleanup'/  Declare Constructor (nX as Integer, nY as Integer)  Declare Destructor ()  Declare Sub SetMotion (Motion as Vector Pointer)  Declare Sub Move ()  Declare Property GetX as Integer End Type   /'Set initial coordinates'/ Constructor Object (nX as Integer, nY as Integer)  X = nX  Y = nY End Constructor   /'Clean up allocated memory'/ Destructor Object ()  delete Movement End Destructor   /'Set the motion Vector'/ Sub Object.SetMotion (Motion as Vector Pointer)  Movement = Motion End Sub   /'Move the object based on its motion Vector'/ Sub Object.Move ()  X += Movement->W  Y += Movement->H End Sub   /'A getter for X, as it's private'/ Property Object.GetX as Integer  Return X End Property    /'MAIN CODE'/   /'Create a new instance of Object at coordinates 100, 100'/ Dim Player as Object = Type<Object>(100, 100)   /'Dynamically allocate a new Vector object moving left 10 units and down 5'/ Player.SetMotion(new Vector (-10, 5))   /'Make the Player update its location'/ Player.Move()   /'Display new X, 90'/ Print Player.GetX   /'Because Player is a local variable, it's destructor is called at the end of scope automatically'/ 

图形库

FreeBASIC拥有一个内置的2D软件图形库,与QuickBASIC兼容,为用户提供了简单的图形元素(如矩形,线和圆)、位块传输以及一些QuickBASIC的图形库中没有的附加特性。图形库本身并不依赖于操作系统,因此可以跨平台使用。

虽然图形库是内置的,但是只有在选择使用时才会被包含,这可以简单地通过调用FBgfx SCREEN命令来实现。通用库(如OpenGL+)为了硬件加速使用API(Windows、Linux等)来创建一个窗口可以不包含FreeBASIC的图形库。

未来的开发

FreeBASIC仍然继续开发,目标是成为一个GCC前端[4],这将带来许多C++和其他面向对象编程语言中的新特性,高级优化技术,以及可以移植到任何现代系统上的能力。

0.17版中已经加入了面向对象程序设计的,扩展了基本的数据类型。还有更多的新特性值得期待。

参考

  1. ^ Release 1.09.0. 2022年1月1日 [2022年7月17日]. 
  2. ^ 2.0 2.1 Lee Seats. . About.com. [2008-08-17]. (原始内容存档于2008-10-19). 
  3. ^ . [2008-04-28]. (原始内容存档于2008-04-12). 
  4. ^ FreeBASIC Todo List on Sourceforge. [2007-07-31]. [永久失效連結]

外部链接

freebasic, 是一个, basic, 语言的编译器, 可运行在microsoft, windows, 保护模式的dos, dos扩展器, linux以及xbox上, 编程范型面向过程, 面向对象設計者andre, victor實作者the, development, team发行时间2004目前版本1, 2022年1月1日, 型態系統静态操作系统dos, linux, microsoft, windows, freebsd許可證gnu, standard, libraries, licensed, unde. FreeBASIC 是一个 BASIC 语言的编译器 2 可运行在Microsoft Windows 保护模式的DOS DOS扩展器 Linux以及Xbox上 FreeBASIC编程范型面向过程 面向对象設計者Andre Victor實作者The FreeBASIC Development Team发行时间2004目前版本1 09 0 2022年1月1日 1 型態系統静态操作系统DOS Linux Microsoft Windows FreeBSD許可證GNU GPL Standard libraries licensed under the GNU LGPL網站http www freebasic net啟發語言QuickBASIC CFreeBASIC通过使用 QB 关键字可以在高级别上支持用QBASIC编写的程序 许多用QBASIC写的程序可以在不需任何修改的情况下编译和运行在这个模式下 但是如果使用默认的参数来编译的话 大部分的程序还是要进行一些修改的 目录 1 特性 1 1 平台支持 1 2 现代编程语言特性支持 1 3 调试支持 1 4 图形界面支持 2 语法 2 1 兼容性 2 2 示例代码 3 图形库 4 未来的开发 5 参考 6 外部链接特性 编辑平台支持 编辑 FreeBASIC 现在可以运行在64位和32位的 Windows GNU Linux 以及16位的 DOS系统 也可以为 Xbox 创建应用程序 越来越多的平台将会被支持 运行时库被设计成可移植的 所有第三方工具均使用来自 GNU Binutils 系统上编译器 100 用 FreeBASIC 代码写成 使得可以简单的自举而不需要依赖太多的不可移植工具 现代编程语言特性支持 编辑 FreeBASIC作为一种高级编程语言 支持面向过程 面向对象和元编程 调试支持 编辑 完全支持GDB GNU 调试器 数组越界检查 只有使用 exx 命令行选项 空指针检查 同上 图形界面支持 编辑 该项目提供了与常见程序库的简单的绑定 比如 C 运行时库 Allegro SDL OpenGL GTK Windows API等 同时也提供了一些示例程序 它使用GNU Binutils软件开发工具作为后端 除了动态和静态库 还可以制作控制台和图形 GUI可执行文件 FreeBASIC完全支持C库和部分C 库 这使得程序员可以使用和创建C和许多其他语言的库 FreeBASIC还不是一个优化编译器 但是它的速度被认为接近主流工具 如GCC 3 语法 编辑FreeBASIC语法试图尽量保持接近BASIC语法 特别是QuickBASIC 虽然语法上试图保持与其前辈一致 FreeBASIC还是遵循了一些现代的标准和编码实现 具有标准的过程特性以及面向对象特性 如对象 运算符重载 函数重载和命名空间等等 已经被加入到FreeBASIC中 FreeBASIC的行在遇到行尾字符或冒号时结束 因此不需要使用特殊字符 如C语言中的分号 来通知编译器此行结束 多条语句可以通过冒号 分割写在一行里 FreeBASIC支持块注释和行尾注释 整行注释使用一个撇号 块注释从 开始 到 结束 兼容性 编辑 FreeBASIC继承自QuickBASIC 2 为了使FreeBASIC与现代的工具兼容并且具有高级编程特性 在开发FreeBASIC的时候还是进行了一些修改的 而 lang选项的设置使得FreeBASIC编译器也能够适应GCC和QuickBASIC兼容语言 当选择FB语言设置时 命令行参数为 lang fb 将开启所有的FreeBASIC新特性 并且不允许使用QuickBASIC的 hackish 特性 该特性不符合现代编程实践 FB Lite语言设置 lang fblite 提供了访问大多数FreeBASIC中新的非面向对象的特性 但是允许使用与老版本BASIC类似的代码风格 语法规则 如允许隐变量 后缀 GOSUB RETURN 行号等等 QB语言设置 lang qb 与 lang fblite类似 但是它更专注于复制QBASIC式的行为 lang qb被设计用来使为QBASIC写的程序能够更容易地运行 在有的情况下 lang fblite的兼容性不够好 这时 lang qb就会很有用 示例代码 编辑 和QBasic一样 在屏幕上写入一行文本的程序可以写成如下的简单语句 Print Hello World Sleep 而且也加入一些面向对象的性质 例如动态连接库 运算符重载 以下是面向对象的例子代码 A Vector motion class Type Vector W as Integer H as Integer Declare Constructor nW as Integer nH as Integer End Type Constructor Vector nW as Integer nH as Integer W nW H nH End Constructor Create an object class Type Object Private X as Integer Y as Integer Movement as Vector Pointer Public Create public methods including a destructor for automated cleanup Declare Constructor nX as Integer nY as Integer Declare Destructor Declare Sub SetMotion Motion as Vector Pointer Declare Sub Move Declare Property GetX as Integer End Type Set initial coordinates Constructor Object nX as Integer nY as Integer X nX Y nY End Constructor Clean up allocated memory Destructor Object delete Movement End Destructor Set the motion Vector Sub Object SetMotion Motion as Vector Pointer Movement Motion End Sub Move the object based on its motion Vector Sub Object Move X Movement gt W Y Movement gt H End Sub A getter for X as it s private Property Object GetX as Integer Return X End Property MAIN CODE Create a new instance of Object at coordinates 100 100 Dim Player as Object Type lt Object gt 100 100 Dynamically allocate a new Vector object moving left 10 units and down 5 Player SetMotion new Vector 10 5 Make the Player update its location Player Move Display new X 90 Print Player GetX Because Player is a local variable it s destructor is called at the end of scope automatically 图形库 编辑FreeBASIC拥有一个内置的2D软件图形库 与QuickBASIC兼容 为用户提供了简单的图形元素 如矩形 线和圆 位块传输以及一些QuickBASIC的图形库中没有的附加特性 图形库本身并不依赖于操作系统 因此可以跨平台使用 虽然图形库是内置的 但是只有在选择使用时才会被包含 这可以简单地通过调用FBgfx SCREEN命令来实现 通用库 如OpenGL 为了硬件加速使用API Windows Linux等 来创建一个窗口可以不包含FreeBASIC的图形库 未来的开发 编辑FreeBASIC仍然继续开发 目标是成为一个GCC前端 4 这将带来许多C 和其他面向对象编程语言中的新特性 高级优化技术 以及可以移植到任何现代系统上的能力 0 17版中已经加入了面向对象程序设计的类 扩展了基本的数据类型 还有更多的新特性值得期待 参考 编辑 Release 1 09 0 2022年1月1日 2022年7月17日 2 0 2 1 Lee Seats FreeBASIC the Successor to QuickBASIC About com 2008 08 17 原始内容存档于2008 10 19 The Computer Language Benchamarks Game FreeBASIC vs gcc 2008 04 28 原始内容存档于2008 04 12 FreeBASIC Todo List on Sourceforge 2007 07 31 永久失效連結 Free software主题外部链接 编辑FreeBASIC官方网站 页面存档备份 存于互联网档案馆 FreeBASIC官方文档 页面存档备份 存于互联网档案馆 FreeBASIC官方论坛 FreeBASIC 托管在 SourceForge 的页面 页面存档备份 存于互联网档案馆 FreeBASIC wiki 页面存档备份 存于互联网档案馆 取自 https zh wikipedia org w index php title FreeBASIC amp oldid 75304472, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。