Jump to content
Wikipedia The Free Encyclopedia

FreeBASIC

From Wikipedia, the free encyclopedia
BASIC dialect
Not to be confused with Free Basics.
FreeBASIC
Paradigm Procedural, object-oriented
Designedby Andre Victor T. Vicentini[1]
Developer The FreeBASIC Development Team
Firstappeared2004;22years ago(2004)
Stable release
1.10.1 / December25, 2023;2 years ago(2023年12月25日)
Typing discipline Static
OS MS-DOS, FreeBSD, Linux, Microsoft Windows
License GNU GPLv2+, Standard libraries licensed under the GNU LGPLv2+
Websitewww.freebasic.net
Influenced by
QuickBASIC, C

FreeBASIC is a free and open source multiplatform compiler and programming language based on BASIC licensed under the GNU GPL for Microsoft Windows, protected-mode MS-DOS (DOS extender), Linux, FreeBSD and Xbox. The Xbox version is no longer maintained.[2]

According to its official website,[3] FreeBASIC provides syntax compatibility with programs originally written in Microsoft QuickBASIC (QB). Unlike QuickBASIC, however, FreeBASIC is a command line only compiler, unless users manually install an external integrated development environment (IDE) of their choice.[4]

Compiler features

[edit ]

On its backend, FreeBASIC makes use of GNU Binutils in order to produce console and graphical user interface applications. FreeBASIC supports the linking and creation of C static and dynamic libraries and has limited support for C++ libraries. As a result, code compiled in FreeBASIC can be reused in most native development environments.

While not an optimizing compiler, FreeBASIC can optionally transcompile to C to compile with optimizations. FreeBASIC supports inline assembly, multi-threading, and does not use automatic garbage collection.

C style preprocessing, including multiline macros, conditional compiling and file inclusion, is supported. The preprocessor also has access to symbol information and compiler settings, such as the language dialect.

Syntax

[edit ]

Initially, FreeBASIC emulated Microsoft QuickBASIC syntax as closely as possible. Beyond that, the language has continued its evolution. As a result, FreeBASIC combines several language dialects for maximum level of compatibility with QuickBASIC and full access to modern features.[5] New features include support for concepts such as objects, operator overloading, function overloading, namespaces and others.[6]

Newline characters indicate the termination of programming statements. A programming statement can be distributed on multiple consecutive lines by using the underscore line continuation char (_), whereas multiple statements may be written on a single line by separating each statement with a colon (:).

Block comments, as well as end-of-line remarks are supported. Full line comments are made with an apostrophe ', while blocks of commented code begin with /' and end with '/.

FreeBASIC is not case-sensitive.

Graphics library

[edit ]

FreeBASIC provides built-in, QuickBASIC compatible graphics support through FBgfx, which is automatically included into programs that make a call to the SCREEN command. Its backend defaults to OpenGL on Linux and DirectX on Microsoft Windows. This abstraction makes FBgfx graphics code cross-platform compatible. However, FBgfx is not hardware accelerated.

Users familiar with external graphics utilities such as OpenGL or the Windows API can use them without interfering with the built-in graphics library.

Language dialects

[edit ]

As FreeBASIC has evolved, changes have been made that required breaking older-styled syntax. In order to continue supporting programs written using the older syntax, FreeBASIC now supports the following dialects:

  • The default dialect (-lang fb as a command-line argument) supports all new compiler features and disallows archaic syntax.
  • The FB-lite dialect (-lang fblite) permits use of most new, non-object-oriented features in addition to older-style programming. Implicit variables, suffixes, GOSUB / RETURN, numeric labels and other features are allowed in this dialect.
  • The QB dialect (-lang qb) attempts to replicate QuickBASIC behavior and is able to compile many QuickBASIC programs without modification.

Example code

[edit ]

Standard programs, such as the "Hello, World!" program are done just as they were in QuickBASIC.

Print"Hello, World!"
sleep:end'Comment, prevents the program window from closing instantly

FreeBASIC adds to this with support for object-oriented features such as methods, constructors, dynamic memory allocation, properties and temporary allocation.

TypeVector
Private:
xAsInteger
yAsInteger
Public:
DeclareConstructor(nXAsInteger=0,nYAsInteger=0)
DeclarePropertygetXAsInteger
DeclarePropertygetYAsInteger
EndType
ConstructorVector(nXAsInteger,nYAsInteger)
x=nX
y=nY
EndConstructor
PropertyVector.getXAsInteger
Returnx
EndProperty
PropertyVector.getYAsInteger
Returny
EndProperty
DimAsVectorPtrplayer=NewVector()
*player=Type<Vector>(100,100)
Printplayer->getX
Printplayer->getY
Deleteplayer
Sleep'Prevents the program window from closing instantly

In both cases, the language is well suited for learning purposes.

References

[edit ]
  1. The FreeBASIC Development Team (2023年07月22日). "fbc/readme.txt at 1.10.1 · freebasic/fbc". Github. Retrieved 2026年05月24日.
  2. FBWiki : FaqPgxbox
  3. freeBASIC Programming Language: Official Web site
  4. "freeBASIC official website downloads page". freeBASIC compiler. Retrieved 13 May 2017.
  5. "freeBASIC dialects". coderJeff's home page. Retrieved 5 February 2012.
  6. "Differences from QB". freeBASIC.net documentation. Retrieved 5 February 2012.
[edit ]
IDEs

AltStyle によって変換されたページ (->オリジナル) /