Перекрёстный вызов процедур Tibbo BASIC и C

Подпрограммы и функции Tibbo BASIC можно вызывать из Tibbo C, а функции Tibbo C - из Tibbo BASIC. Это называется «перекрёстным вызовом».

Массивы и структуры Tibbo BASIC несовместимы с массивами и структурами Tibbo C, поэтому перекрёстно вызывать процедуры, у которых аргументы или возвращаемое значение являются массивами или структурами, нельзя.

Внимание

Типы аргументов и возвращаемых значений между языками не сверяются. В объявлении на BASIC можно задать f как аргумент типа word, а в реализации на C сделать его строкой, или наоборот. TIDE такое расхождение не обнаружит. Будьте очень внимательны!

Помочь при перекрёстных вызовах может следующая таблица - в ней сопоставлены соответствующие элементы языков Tibbo BASIC и C:

Tibbo BASICTibbo C
Подпрограммы и функции

sub name()

end sub

void name(){

}

function name() assimple_type

end function

simple_type name(){

}

Передача аргументов:
sub name(x as simple_type)...void name(simple_type x)...
sub name(ByVal x as simple_type)...void name(simple_type x)...
sub name(ByRef x as simple_type)void name(simple_type *x)...

Пример вызова двух функций C из BASIC:

declare function c_increment(x as byte) as byte
declare sub c_str_double(byref s as string) 'notice how byref becomes * on C side
sub on_sys_init
   dim x as byte=5
   x=c_increment(x) 'x will be 6
   dim s as string="TIBBO"
   c_str_double(s) 's will be "TIBBOTIBBO"
end sub
unsigned char c_increment(unsigned char x){
   return ++x;
}
void c_str_double(string *s){
   *s=*s+*s;
}

То же самое, но наоборот - C вызывает функцию и подпрограмму на BASIC:

function basic_increment(x as byte) as byte
   basic_increment=x+1
end function
sub basic_str_double(byref s as string)
   s=s+s
end sub
unsigned char basic_increment(unsigned char x);
void basic_str_double(string *s);
void on_sys_init(){
   unsigned char x=5;
   x=basic_increment(x);
   string s="TIBBO";
   basic_str_double(&s);
}
Исходный материал Tibbo обновлён 12 июля 2022Оригинал на docs.tibbo.com · Сообщить об ошибке