Отличия от QB
 
Начиная с версии 0.17, FreeBASIC представляет параметр командной строки -Lang, который используется, чтобы изменить режим совместимости языка. Используя опцию -lang qb при компиляции, выбирается наиболее совместимый с QB парсер. Все различия, перечисленные ниже, предполагают использование опции -lang qb.

Несовместимости архитектуры/платформы
  • FreeBASIC написан для 32-битных операционных систем и 32-битного DOS, и не может использовать код, который зависит от 16-битной DOS, 16-битного ассемблера или модели памяти (сегмент & смещения, XMS/EMS...).
  • DEF SEG больше не требуется, да и не будет работать с любым кодом, который использует POKE для обращения к видео памяти , однако, для DOS, это может быть легко переписано, используя функции DPMI.
  • CALL INTERRUPT больше не функционирует, так как она опирается на 16-разрядную DOS. DOS прерывания можно вызывать в версии DOS32 с помощью библиотеки DPMI, но они могут работать медленно из-за смены режима процессора 32bit-16bit-32bit.

Изменения из-за неоднозначности
  • Скалярная переменная и массив с тем же самым именем и суффиксом больше не могут разделить то же самое имя.
  • SHARED не может использоваться внутри SUB или FUNCTION поскольку это приводит к общим переменным, не определенным в главной программе. Надлежащее DIM SHARED в главной программе должно использоваться.
  • COMMON декларации не зависит от порядка их опубликования, переменные сопоставляются по имени и по этой причине COMMON больше не поддерживается. Все COMMON массивы являются массивами переменной длины в FB.
  • Если на одной линии If имеет (ненужное) двоеточие непосредственно после THEN, то это должно заканчиваться End If в FB. Если ненужное двоеточие будет удалено, то FB будет вести себя как QB.

Различия в дизайне
  • Графическая поддержка была внутренне перепроектирована, смотрите Краткий обзор GfxLib
  • CLEAR больше не используется для сброса всех переменных и установки стека. Переменные должны быть сброшены одна за другой, и размер стека может быть изменен в командной строке компилятора. Ключевое слово CLEAR используется для заполнения памяти в FB.
  • Строковые пункты DATA должны быть в кавычках в FB,  в QB это было опционально.
  • Все функции должны были объявлены, даже с CALL в FreeBASIC.  С CALL было возможно вызвать функции prototype-less в QuickBASIC. (будет поддерживаться в будущем с -lang qb)
  • В FreeBASIC все массивы должны быть явно объявлены. (Интерпретируемые массивы QuickBasic создаются автоматически максимум с 10 индексами.)
  • Строки, заканчивающиеся нулевым символом, совместимы с C библиотеками и Windows API, строки с заданной длинной не содержат chr$(0) на данный момент.
  • Когда INKEY[$] читает расширенные клавиши (Num Pad, Стрелки...) , то возвращает два строковых символа. В FB первый символ CHR[$](255), тогда как в QB первый символ CHR$(0).
  • Со строками фиксированной длины FreeBASIC выдает реальную длину с помощью  Len , плюс один (нулевой-символ), даже для полей Type.
  • В FreeBASIC  неиспользованные символы в строках фиксированной длины устанавливаются в 0 , независимо от того какой параметр компилятора "-lang" используется. В QB, неиспользованные символы установлены в 32 (пробел, или " " в ASCII).
  • Когда строки фиксированной длины объявляется, но еще не инициализированы, все символы установливаются в 0, как в FreeBASIC , так и в QB.
  • В FB массивы хранятся в row-major порядке, а в QB по умолчанию в column-major порядке. Порядок row-major: данные увеличиваются по строкам. Порядок column-major: данные увеличиваются по столбцу. Для примера, если вы имеете массив DIM A(1 TO 3, 1 TO 8), в row-major порядке элементы хранятся таким образом, чтобы после A(3,5) в памяти лежало A(3,6); в column-major порядке за A(3,5) следует A(4,5).
  • Программы не останавливаются больше на ошибках во время выполнения если опции -e или -ex используются в командной строке. Используя эти параметры, можно использовать обработку ошибок QB стиля (ON ERROR, RESUME...).
  • Восьмеричные числа пишутся как &o..., тогда как в QB можно писать &o... или &....
  • В FB циклы FOR в sub/function не принимают аргументы через ByRef в качестве счетчиков. Локальная переменная должна использоваться.
  • FB Locate не приветствует четвертый и пятый аргументы для вида курсора.
  • FB Screen не допускает переключения видимых или рабочих страниц. Используйте ScreenSet для этого.
  • FB Color не позволяет третий аргумент для цвета границы.
  • FB Timer возвращает количество секунд с момента запуска компьютера, в то время как QB TIMER возвращает количество секунд, прошедших с полуночи. (Win32 и Linux только: нет отсчета с полуночи! :))
  • В QB chr$(13) внутри строки является CR+LF когда вызывается PRINT. В FB CHR(13) печатает только то, чем является, CR.
  • EOF больше не может быть использован для обнаружения пустого буфера порта. Пустой буфер должны быть проверен, сравнивая LOC с 0 в FB. Так же для файлов, открытых с режимом RANDOM или BINARY, EOF возвращает не нуль, после прочтения размера файла, см. EOF.
  • Не сигнализируются ошибки во время переполнения переменных Integer в FB, даже с опцией -ex. Любой QB код, который опирается на отлов ошибок переполнения для переменных Integer не будет работать в FB.

Архаичные команды
  • Они будут работать, только если gfxlib связана, то есть если графический режим экрана активирован в коде. Консоль не может быть сохранена с BSAVE или загружена с BLOAD. Другое использование BSAVE-BLOAD, такое как сохранение и загрузка массивов, могут быть легко достигнуты с GET и PUT.
  • FIELD заявление (для определения записи во время выполнения) было не принято во внимание. Ключевое слово FIELD используется в FB для выравнивания полей переменных Type.
  • Команды для воспроизведения звука через динамики ПК не используются в FB: любые ссылки на операторы SOUND или PLAY приведут к сообщениям об ошибке. Существует сторонняя библиотека , в которой эмулируются эти функции, но это не входит в FreeBASIC.
  • Событийно-управляемое программирование (ON KEY, ON PEN, ON STRIG, ON TIMER) больше не работает. Они могут быть эмулированы отдельной библиотекой.
  • MKSMBF$ и все MKxMBF$ команды, поддерживающие pre-QB4.0 Microsoft , составляющие формат с плавающей запятой (MBF), не осуществлены.
  • Использование скобок в аргументах, передаваемых в функции, эмулирующих передачу по значению не допускается. CALL в результате всех аргументов переданных по значению, больше не работает. Соответствующие ByVal и ByRef ключевые слова должны быть использованы.
  • FILES не осуществляется. Вместо этого, PDS 7.1 -совместимый Dir[$] можно использовать.
  • IOCTL, ERRDEV и ERRDEV$ низкоуровневые функции для доступа к оборудованию не будут выполнены, они зависят от ОС.
  • CALL ABSOLUTE to run inline machine code is no longer supported. Instead you can use Asm...END ASM blocks to insert inline assembler commands. Or use the ASM ... one line command.для запуска встроенного машинного кода больше не поддерживается. Вместо этого вы можете использовать блок Asm ... END ASM для вставки команд встроенного ассемблера. Или используйте команду ASM если все вместится на одной линии.