二维码
阿哥vca

扫一扫关注

当前位置: 首页 » 新闻资讯 » 热点资讯 » 正文

FreeBASIC

放大字体  缩小字体 发布日期:2025-07-15 05:05:47    来源:本站    作者:admin    浏览次数:91    评论:0
导读

  FreeBASIC编程范型面向过程 / 面向对象设计者Andre Victor实现者The FreeBASIC Development Team发行时间2004当前版本1.10.0

  FreeBASIC编程范型面向过程 / 面向对象设计者Andre Victor实现者The FreeBASIC Development Team发行时间2004当前版本1.10.0 (2023年5月15日)

  类型系统静态操作系统DOS,Linux,Microsoft Windows, FreeBSD许可证GNU GPL,Standard libraries licensed under the GNU LGPL网站http://www.freebasic.net启发语言QuickBASIC,C

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

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

  FreeBASIC 现在可以运行在64位和32位的 Windows、GNU/Linux,FreeBSD, 以及16位的 DOS系统。也可以为 Xbox 创建应用程序(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。

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

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

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

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

  当选择FB语言设置时(命令行参数为-lang fb),将开启所有的FreeBASIC新特性,并且不允许使用QuickBASIC的"hackish"特性(该特性不符合现代编程实践)。

  FB-Lite语言设置(-lang fblite)提供了访问大多数FreeBASIC中新的非面向对象的特性,但是允许使用与老版本BASIC类似的代码风格。语法规则,如允许隐变量、后缀、 / 、行号等等。

  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(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 命令来实现。通用库(如OpenGL+)为了硬件加速使用API(Windows、Linux等)来创建一个窗口可以不包含FreeBASIC的图形库。

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

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

 
(文/admin)
打赏
免责声明
• 
部分文章来源于网络,我们均标明出处,如果您不希望我们展现您的文章,请与我们联系,我们会尽快处理。
0相关评论