Всегда пользовался режимом компилятора по умолчанию "Free Pascal".
А в чём отличие между этим режимом и режимом "Object Pascal extention"?
Прошу пояснить хотя бы на пальцах или дать ссылку на материал, где это можно прояснить.
В чём отличие между режимоFree Pascal ObjectPascal extention
Модератор: Модераторы
FPC mode
OBJFPC mode
если ты используешь OBJFPC, то
1) у тебя всегда неявно используется ObjPas модуль (по тому же принципу что и модуль System)
2) тип Integer становится LongInt (32-битным, так же как и в режиме Delphi)
3) влючается поддержка Exception-ов
4) синтаскис запрещает совпадение имён параметров методов и имён свойтсв объекта (что в Delphi режиме можно)
всё. засим разницы официально больше нет
OBJFPC mode
если ты используешь OBJFPC, то
1) у тебя всегда неявно используется ObjPas модуль (по тому же принципу что и модуль System)
2) тип Integer становится LongInt (32-битным, так же как и в режиме Delphi)
3) влючается поддержка Exception-ов
4) синтаскис запрещает совпадение имён параметров методов и имён свойтсв объекта (что в Delphi режиме можно)
всё. засим разницы официально больше нет
спасибо.
главное, что меня волнует, не могу понять различия в объектных моделях тут и там.
главное, что меня волнует, не могу понять различия в объектных моделях тут и там.
скалогрыз писал(а):всё. засим разницы официально больше нет
Есть.
5) В функциях результат можно записывать в переменную Result. Бесполезное новшество, но оно есть.
6) По другому выплёвываются ошибки в консоль. Достаточно прилинковать хоть один модуль с ObjPas синтаксисом и это случится.
tovit писал(а):главное, что меня волнует, не могу понять различия в объектных моделях тут и там.
Вот так ты не скомпилируешь:
Код: Выделить всё
{$mode fpc}
Type
A = class
public
B: byte;
end;
begin
end.А так скомпилируешь:
Код: Выделить всё
{$mode objfpc}
Type
A = class
public
B: byte;
end;
begin
end.То есть классы в простом паскале не используешь.
Сквозняк писал(а):То есть классы в простом паскале не используешь.
Код: Выделить всё
{$mode fpc} {$modeswitch class}
Type
A = class
public
B: byte;
end;
begin
end.