Build сборка 0.25

Предыдущая тема Следующая тема Перейти вниз

Build сборка 0.25

Сообщение  trew в Вс Ноя 11, 2012 2:48 pm

По ссылке:

Скачать

Можно скачать версию 0.25, в которой как я понял один из разработчиков dkl , определил для тестирования нововведения в возможностях компилятора. А именно абстрактные классы, виртуальные методы. Примеры можно посмотреть ЗДЕСЬ. Язык по мощностям синтаксиса все больше приближается к С++. Для кого это нужная вещь, для кого излишняя... Мне например наследование , которое ввели в 0.24 было не лишним. Да где-то из-за этого возможно пострадал размер конечного файла, но удобство важнее. Есть вещи в синтаксисе FreeBasic, которые на мой взгляд надо подправить и об этом я писал на оф. сайте, но у них другие мнение. Например:

тип перечислений работает следующим образом (на мой взгляд логики в этом нет):

Код:
Enum A
   a
   b
End Enum

Dim b As A

b = 8

Sleep

То есть в С++ подобный код компилятор забракует по простой причине: число которое присваивается b не равно тем которые по условию входят в перечисление (0 и 1) .
Как бы ни было, я уважаю их мнение, поскольку они с малого до великого вели продукт и продолжают его развивать.

trew

Сообщения : 331
Дата регистрации : 2010-10-14

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Build сборка 0.25

Сообщение  electrik в Пн Ноя 12, 2012 2:56 pm

опа! я даже проморгал новую версию. совсем со своими http про все забыл. спасибо. надо eric'u сказать. а то он вообще наши ряды покинул - ушел на c++ и c#.
любит он ооп, да и для c#, столько инструментария...

electrik

Сообщения : 391
Дата регистрации : 2008-09-02
Возраст : 37
Откуда : галактика Млечный путь, система Солнечная, планета Земля, страна россия, город Санкт Петербург

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Build сборка 0.25

Сообщение  Замабувараев в Вт Ноя 13, 2012 7:05 pm

Очень интересно, нужно задуматься.
avatar
Замабувараев

Сообщения : 99
Дата регистрации : 2008-08-20
Возраст : 34
Откуда : Красноярск

Посмотреть профиль http://www.freebasic.su

Вернуться к началу Перейти вниз

Re: Build сборка 0.25

Сообщение  VerhoLom в Вт Янв 22, 2013 2:25 pm

Ничего не страдает размер файла. Вот пример:

ФБ-программа:
============
'интерфейс, который наследуем потом
Type Itf
As UInteger itf_Pole
End Type

'Наш класс
Type MyClass Extends Itf
As UInteger myclass_Pole
End Type

'//////////////////////////////////////////////////////
'экземпляр класса
Dim mc As MyClass Ptr=New MyClass

'Заполняем поля
mc->itf_Pole=1
mc->myclass_Pole=2

'Печатаем все поля
Print "mc->itf_Pole=";mc->itf_Pole
Print "mc->myclass_Pole=";mc->myclass_Pole

Sleep
End 1
'//////////////////////////////////////////////////////

А вот что компилится (покажу только классы и обращения к ним, получаем Си-файл так: fbc -s console -gen gcc -r):

Наши интерфейс и класс:

typedef struct _ITF {
uinteger ITF_POLE;
} ITF;

typedef struct _MYCLASS {
ITF $FB_BASE;
uinteger MYCLASS_POLE;
} MYCLASS;

Как видно, в объявлении MYCLASS просто объявляется поле типа интерфеса, а обращение к нему идет так:

MYCLASS* MC$;
MYCLASS* TMP$0$;
MC$ = (TMP$0$);

#define vr$1 ((uinteger*)(MC$))
*(uinteger*)((ubyte *)vr$1) = ((uinteger)1u); 'mc->itf_Pole=1

#define vr$2 ((uinteger*)(MC$))
*(uinteger*)((ubyte *)vr$2 + 4) = ((uinteger)2u); 'mc->myclass_Pole=2

Адресная арифметика во всей красе
avatar
VerhoLom

Сообщения : 67
Дата регистрации : 2010-07-06
Возраст : 36

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Build сборка 0.25

Сообщение  Спонсируемый контент


Спонсируемый контент


Вернуться к началу Перейти вниз

Предыдущая тема Следующая тема Вернуться к началу


 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения