logo
TurboProlog / Документация / TOM_2

Вызов процедуры, написанной на Си из Пролога.

Следующая короткая программа на Турбо Прологе показывает, как обес-

печить доступ к процедуре double (написанной на Си), которая удваивает

значение. Предположим, что вы вызываете процедуру следующим образом:

double(ВхЦелое, ВыхПеременная)

ВхЦелое связывается с целым числом до вызова, поэтому после вызова

ВыхПеременная связывается с удвоенным значением этого числа.

global predicates

double(integer, integer) - (i, o) language c

goal

double(5, N),

write("Удвоенное 5 равно", N).

В Турбо Пролог'овской программе, которая содержит вызов double, в

разделе global predicates вы должны указать язык, который используется

для установки double.

В исходном тексте на Си вы должны использовать соглашения Турбо Про-

лога об обозначениях для имен подпрограмм Си. За именем предиката должен

следовать знак подчеркивания и целое число, соответствующее шаблону.

void double_0(int in, int *out) /*Описание предиката*/

{ /*double на Си*/

*out = in + in;

}