КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА - Турбо С: руководство пользователя. Часть 2 - Стр. 23

Индекс материала
Турбо С: руководство пользователя. Часть 2
Стр. 2
Стр. 3
Стр. 4
Стр. 5
Стр. 6
Стр. 7
Стр. 8
Стр. 9
Стр. 10
Стр. 11
Стр. 12
Стр. 13
Стр. 14
Стр. 15
Стр. 16
Стр. 17
Стр. 18
Стр. 19
Стр. 20
Стр. 21
Стр. 22
Стр. 23
Стр. 24
Стр. 25
Стр. 26
Стр. 27
Стр. 28
Стр. 29
Стр. 30
Стр. 31
Стр. 32
Стр. 33
Стр. 34
Стр. 35
Стр. 36
Стр. 37
Стр. 38
Стр. 39
Стр. 40
Стр. 41
Стр. 42
Стр. 43
Стр. 44
Стр. 45
Стр. 46
Стр. 47
Стр. 48
Стр. 49
Стр. 50
Стр. 51
Стр. 52
Стр. 53
Стр. 54
Стр. 55
Стр. 56
Все страницы
     тельные библиотеки Си.  Третий пример демонстрирует распределение          
     памяти.  Последний пример описывает практическую программу работы          
     с  графикой и демонстрирует некоторые мощные возможности, которые          
     вы получите от комбинирования двух языков.                                 
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                

                         - 185,186 -
                                                                                
               Компоновка Турбо Си и Турбо Пролога: обзор                       
     -----------------------------------------------------------------          
                                                                                
          Компиляция и компоновка ваших модулей,  написанных на  Турбо          
     Си, с  модулями и программами Турбо Пролога выполняется напрямую.          
     Вам только необходимо запомнить следующие пункты:                          
                                                                                
          Компиляция ваших программных модулей:                                 
                                                                                
       # Ваши Си функции, вызываемые Турбо Прологом, должны иметь суф-          
         фикс _0 (см.  первый пример программы на Си,  CSUM.C,  в этой          
         главе) , если вы не используете в Турбо Прологе расширение as          
         "
          вается так:                                                           
                                                                                
          void *_malloc (int size).                                             
                                                                                
          _free освобождает память,  распределеную в "куче" Пролога, и          
          вызывается так:                                                       
                                                                                
          _free(void *ptr, int size).                                           
                                                                                
          Когда используется alloc_gstack,  память при неудачной отра-          
          ботке освобождается автоматически, что заставляет Турбо Про-          
          лог производить откат через операцию размещения памяти.               

                         - 189,190 -
                                                                                
                                                                                
        # printf, putc и соответствующие им функции вывода на экран не          
          работают  после компоновки Турбо Си и Турбо Пролога.  Тем не          
          менее, писать символы в окна Пролога может wrch, а zwf явля-          
          ется  аналогом  предиката  Турбо  Пролога writef.  zwf - это          
          printf с некоторыми ограничениями.                                    
                                                                                
          zwf(FormatString, аргумент 1, аргумент 2, аргумент 3, ...)            
                                                                                
          FormatString - строка формата,  аналогичная  используемой  в          
          printf.  Посмотрите в справочном руководстве по Турбо Проло-          
          гу, какие спецификации преобразования поддерживаются.                 
                                                                                
          zwf и wrch находятся в PROLOG.LIB.                                    
                                                                                
        # Функции Си,  вызываемые Турбо Прологом, не должны возвращать          
          значений и должны быть определены как void.  Шаблон на аргу-          
          менты должен быть специфицирован  в  глобальных  объявлениях          
          предикатов Турбо Пролога. Так:                                        
                                                                                
          factorial(integer,real) - (i,o) language c                            
                                                                                
                                                                                
                                                                                
          позволяет определить  Турбо  Прологу,  что  factorial - есть          
          функция от двух аргументов: первый - integer (целый), второй          
          -  real  (с плавающей точкой).  Конструкция (i,o) указывает,          
          что первый аргумент (integer) является входным,  а второй  -          
          указатель на число с плавающей точкой,  которому будет прис-          
          воено значение факториала. Буква с в этой конструкции указы-          
          вает  Турбо  Прологу,  что эта функция использует соглашения          
          вызывов Си (смотри третий пример  программы  в  этой  главе:          
          DUBLIST.C и PLIST.PRO).                                               
                                                                                
               Заметьте, что  значение  возвращается в виде указателя.          
          Для большей информации по  описанию  шаблонов  на  аргументы          
          смотрите обсуждение его альтернативы в примере 3.                     
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                

                         - 191,192 -
                                                                                
          Пример 1: Сложение двух целых чисел                                   
     -----------------------------------------------------------------          
                                                                                
          Следующий пример комбинирует функцию Турбо Си (которая скла-          
     дывает два целых числа) с модулем на Турбо Прологе, который поме-          
     щает результат, вычисленный функцией Си, в текущее окно.                   
                                                                                
                                                                                
               Исходный файл Турбо Си: CSUM.C                                   
     -----------------------------------------------------------------          
     /*                                                                         
     подпрограмма вывода zwf работает подобно подпрограмме printf язы-          
     ка Си. Она печатает результат в текущем окне                               
     */                                                                         
     extern void zwf(char *format, ...);                                        
     void sum_0(int parm1,int parm2, int *res_p)                                
     {                                                                          
     zwf("Это функция суммирования: parm1=%d, parm2=%d, parm1,parm2);           
     *res_p=parm1+parm2;                                                        
                                                                                
     }                                                                          
     /* конец sum_0 */                                                          
                                                                                
               Компиляция  CSUM.C  в  CSUM.OBJ                                  
     -----------------------------------------------------------------          
                                                                                
          После редактирования и сохранения на диске файла CSUM.C, вам          
     необходимо выбрать опции для его компиляции.  Турбо Си для  этого          
     предоставляет вам два метода:                                              
                                                                                
          1. Выберете  опции  для  компиляции  из меню Интегрированной          
     среды Турбо Си:                                                            
                                                                                
     Options/Compiler/Model/Large (-ml)                                         
     Options/Compiler/Optimization/Jump Optimization...On (-O)                  
     Options/Compiler/Code Generation/Generate Underbars...Off (-u-)            
     Options/Compiler/Optimization/Use Register Variables...Off (-r-)           
                                                                                
          Сразу после  выбора  опций  выберите в главном меню Турбо Си          
     опцию Options/Store options - Опции/Сохранить опции, когда же на-