|Designed by||Andre Victor|
|Developer||The FreeBASIC Development Team|
|Stable release||1.02.1 / April 26, 2015|
|OS||DOS, FreeBSD, Linux, Microsoft Windows|
|License||GNU GPL, Standard libraries licensed under the GNU LGPL|
According to its official website, FreeBASIC provides syntax compatibility with programs originally written in QuickBASIC. Unlike QuickBASIC, however, FreeBASIC is compiler only and can be used from the command line, unless users manually download, install and configure an external IDE of their choice. IDEs specifically catered to FreeBASIC exist, they include FBide and FbEdit.
On its backend, FreeBASIC makes use of GNU binutils in order to produce console and GUI 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.
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.
Initially, FreeBASIC emulated QBASIC 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 QBASIC in one side, and full access to modern features in one other. New features include now support for types as objects, operator overloading, function overloading, namespaces and others.
FreeBASIC is not case sensitive.
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 GNU/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.
As FreeBASIC has evolved, changes have been made which 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,
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.
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
Type Vector Private: x As Integer y As Integer Public: Declare Constructor (nX As Integer = 0, nY As Integer = 0) Declare Property getX As Integer Declare Property getY As Integer End Type Constructor Vector (nX As Integer, nY As Integer) x = nX y = nY End Constructor Property Vector.getX As Integer Return x End Property Property Vector.getY As Integer Return y End Property Dim As Vector Ptr player = New Vector() *player = Type<Vector>(100, 100) Print player->getX Print player->getY Delete player Sleep 'Prevents the program window from closing instantly
In both cases, the language is well suited for learning purpose.
- "FreeBASIC about page". FreeBASIC compiler. Retrieved 5 February 2012.
- Lee Seats. "FreeBASIC the Successor to QuickBASIC". About.com. Retrieved 2008-08-17.
- FBWiki : FaqPgxbox
- FreeBASIC Programming Language: Official Website
- "FreeBASIC official website downloads page". FreeBASIC compiler. Retrieved 5 February 2012.
- "FreeBASIC dialects". coderJeff's home page. Retrieved 5 February 2012.
- "Differences between QBASIC and FreeBASIC". FreeBASIC.net documentation. Retrieved 5 February 2012.
|Wikimedia Commons has media related to:|