BASIC совместимость
- FreeBASIC не "новый" бейсик. Вам не нужно изучать много, если вы
знакомы с Microsoft-BASIC вариантом. Вы можете использовать либо "-lang qb"
для совместимости, или (по умолчанию) "-lang fb" для
некоторых новых функций, но это внесет некоторые ограничения , а
так же некоторое сходство с "C" языком программирования. См.
также тему Диалекты компилятора.
- FreeBASIC не регистрочувствительный язык; Явное указание функции "main" не
требуется; большинство графических и консольных операторов и процедур,
существующих в Microsoft QuickBASIC уже реализованы, или будут реализованы .
- Только с опцией "-lang qb": скалярные переменные не нуждаются в
определении размеров, и суффиксы могут использоваться; номера строк
поддерживаются; GoSub поддерживается.
Чистый синтаксис
- Было добавлено только небольшое количество ключевых слов. Все процедуры
реализованы в виде библиотек, поэтому по большей части, нет
новых внутренних процедур, и, следовательно, весьма низкий шанс
дублирования имен со старым кодом.
Тонкие привязки (файлы заголовков) с существующими
библиотеками C и API-интерфейсами
- Нет оберток, просто портированы файлы заголовков, что делает
использование внешних библиотек C очень простым
- Официальный дистрибутив поставляется с несколькими заголовками к
существующим библиотекам C , см. Внешние библиотеки ТОС
для получения полного актуального списка.
Многоплатформенность
- FreeBASIC в настоящее время работает на 32-битной Windows, Linux, и DOS
, а также создает приложения для Xbox консоли. Другие платформы
на очереди.
- RunTime библиотека была написана как портабельная. Все сторонние библиотеки
используют инструменты, которые уже существуют в большинстве операционных
систем, так как они от GNU binutils. Код компилятора написан на FreeBASIC (т.е.
FreeBASIC компилирует "сам себя".). Это делает сборку простым, и создает
независимость от непереносимых инструментов.
Поддержка юникода
- Кроме ASCII файлов с Unicode управляющими
последовательностями (\u), FreeBASIC может разобрать UTF-8, UTF-16LE, UTF-16BE, UTF-32LE
и UTF-32BE исходные файлы (.bas) или прочитать (.bi) файлы. Они
могут быть свободно смешаны с другими исходниками/заголовками в
том же проекте (также с другими файлами ASCII).
- Литеральные строки могут быть введены в исходном нелатинском алфавите,
просто использовать текстовый редактор, который поддерживает некоторые
упомянутые выше форматы Unicode.
- Тип WString используется для
расширенных символов, все строковые процедуры (например Left, Trim,
и др.) тоже будут работать с расширенными символами.
- Open был расширен для поддержки UTF-8, UTF-16LE
и UTF-32LE файлов со спецификатором Encoding. Input #
и Line Input #, а также Print #
и Write # можно использовать как
обычно, и любое преобразование между Unicode и ASCII
происходит автоматически при необходимости.
- Print так же поддерживает Unicode
для вывода (см. в разделе Требования).
Большое количество встроенных типов данных
- Целые: Byte, UByte, Short, UShort, Integer, UInteger, Long, Ulong, LongInt, ULongInt
- С плавающей точкой: Single, Double
- Строковые: фиксированной длины, переменной длины или с завершающим нулем (ZString),
до 2GB длиной
- Unicode строки (WString),
как и ZString, но с поддержкой
расширенных символов. Используются Windows Unicode API
функции непосредственно, и др.
Пользовательские типы (UDT)
- Неограниченная вложенность.
- BASIC Type поддерживаются, вместе с Union
оператором (в том числе анонимные UNION).
- Массивы могут использовать до восьми размерностей включительно.
- Указатель на процедуры в полях
- Битовые поля.
Перечисления (enum)
- Легко объявить список констант с последовательными значениями с помощью Enum.
Массивы
- Фиксированные и динамические массивы поддерживаются до 2 GB размером.
- До восьми размерностей, включая массивы с неизвестными размерами.
- Любые нижние и верхние границы массивов.
- Данные элементов могут быть сохранены во время повторного переопределения
размера массивов с ReDim используя
оператор Preserve
Указатели
- Указатели на любые типы данных, перечисленных выше, в том числе на
массив символов строки, элементов массива и UDT.
- Тот же синтаксис, как в C.
- Неограниченная косвенная адресация (например, указатель на указатель
на ...).
- Указатели на процедуры.
- Индексация [] (включая строковую индексацию).
- Преобразование типов.
Инициализация переменных, объектов и массивов
- Для статических на уровне модуля или локальных переменных, массивов и
UDT.
Значения параметров процедуры по умолчанию
- Для числовых, строковых и UDT параметров.
Перегрузка процедур
- Включая процедуры с параметрами по умолчанию.
Ассемблерные вставки
- Intel синтаксис.
- Ссылки на переменные непосредственно по имени; никакие "хитрости кода" не
требуются.
Традиционная поддержка препроцессора
- То же синтаксис, как и в C.
- Однострочные макросы поддерживаются командой #define ,
включая параметры.
- Многострочные макросы поддерживаются командой #macro.
Типы - псевдонимы (Alias)
- Поддержка прямой ссылки как в C, включая UDT типы и указатели на
процедуры.
C-подобные управляющие последовательности для
строковых литералов
- Так же, как в C (За исключением того, что числа интерпретируются как
десятичные, не восьмеричные).
Поддержка
отладки
- Полная поддержка отладки с GDB (the GNU debugger) или Insight (a GDB GUI frontend).
- Проверка границ массивов (только со включенной опцией -exx в
командной строке).
- Проверка нулевых указателей (так же, как выше).
Создание OBJ, LIB, DLL, и console или GUI EXE
- Вы не ограничены на какой-то одной IDE или редакторе подобного рода.
- Вы можете создать статические и динамические/разделяемые библиотеки добавив
только один параметр командной строки (-lib или -dylib/-dll).
Как 32-разрядное приложение
- FreeBASIC может компилировать файлы исходного кода до 2 ГБ.
- Количество символов (переменных, констант, и так далее) ограничивается
только размером общей памяти, доступной во время компиляции. (Вы можете,
например, включить OpenGL, GTK / SDL, BASS,
одновременно в исходном коде.)
Оптимизированная генерация кода
- Хоть FreeBASIC не оптимизирующий компилятор, он делает много видов
общих оптимизаций для создания максимально быстрого кода,
указанного для x86 процессора, не уступая другим альтернативным
Basic, в том числе коммерческим.
Полностью бесплатный
- Все сторонние инструменты предоставляются бесплатно. Нет заброшенного
или защищенного авторским правом программного обеспечения
(за исключением GORC на Win32). Ассемблер, компоновщик,
создатель библиотек/архиватор и другие приложения командной
строки поставляются из GNU Binutils инструментов
программирования.