adfun.ru
 
BIGLIB
  большущая библиотека (9812 книг), можно не только прочитать но и скачать бесплатно
 
АСТРОЛОГИЯ
  книги по астрологии
 
КРИМИНАЛ
  книги про криминал
 
ДЕТЕКТИВЫ
  детективы известных
   писателей
 
ФАНТАСТИКА
  фентези, фантастика,   фантастические повести
 
ПРИКЛЮЧЕНИЯ
  книги про приключения,   путешествия
 
ПОЛИТИКА
  книги про политиков,   репрессии
 
ПСИХОЛОГИЯ
  разнообразная литература   по психологии
 
КЛАССИКА
  классическая литература
 
КОМПЬЮТЕРНАЯ
  ЛИТЕРАТУРА
  про компютерное железо,   документация, языки   программирования
 
РЕЛИГИЯ, АТЕИЗМ
  книги про религию
 
ФИЛОСОФИЯ
  книги, которые заставляют   задуматься над   окружающим тебя миром.
 
ЭНЦИКЛОПЕДИИ
  самые интересные   энциклопедии на
   разные темы
 
МЕДИЦИНА
  медицинские книги,   методички,
   народные лечебники
 
КУЛИНАРИЯ
  рецепты тортов,   консервирование,
  все о спиртных
  напитках.
 
СТИХИ
  стихи популярных и не   очень авторов
 
ТВОРЧЕСТВО
  народное творчество,   стихи, песни и т.д.
 
ЮМОР
  анекдоты, приколы,   смешные истории
 
ЛЮБОВНЫЙ РОМАН
  мир высоких чувств и   любовных грез
 
ЭРОТИКА
  эротические рассказы,   книги о технике секса,   кама-сутра и др.




adfun.ru
Rambler's Top100 Rambler's Top100
    НА ГЛАВНУЮ
    РЕФЕРАТЫ
    ТОСТЫ
    ТЕСТЫ
    АВТО
    ДЛЯ СТУДЕНТА
    КНИГИ
    КОНТАКТ
 
Турбо С: руководство пользователя. Часть 2
Автор ""
Размер 800673 Байт
Страница 44 из 56
СКАЧАТЬ КНИГУ ЦЕЛИКОМ

     ННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН          
          int (f1);                      Функция, возвращающая целое.           
                                                                                
          typedef int *intptr;                                                  
          intptr p1;                     Указатель на целое.                    
          intptr f2();                   Функция, возвращающая указа-           
                                         тель на целое.                         
                                                                                
          typedef int far *farptr;                                              
          farptr p2;                     Far-указатель на целое.                
          farptr f3();                   Near-функция,  возвращающая            
                                         far-указатель на целое.                
          intptr far f4();               Far-функция,  возвращающая             
                                         near-указатель на целое.               
                                                                                
                                                                                
          typedef int (*fncptr1)(int);                                          
          fncptr1 fp1;                   Указатель  на  функцию, воз-           
                                         вращающую целое и  принимаю-           
                                         щую целое.                             
                                                                                
          typedef int (*fncptr2)(intptr);                                       
          fncptr2 fp2;                   Указатель  на  функцию, воз-           
                                         вращающую  целое и принимаю-           
                                         щую  указатель  на  целое.             
                                                                                
          typedef int (far *ffptr)(far ptr);                                    
          ffptr fp3;                     Far - указатель  на  функцию,          
                                         вовращающую целое и  принима-          
                                         ющую far-указатель на целое.           
                                                                                
          typedef ffptr ffplist[5];                                             
          ffplist list;                  Массив  из  5 far- указателей          
                                         на  функции, возвращающие це-          
                                         лое и принимающие  far-указа-          
                                         ли на целое.                           
                                                                                

                         - 361,362 -
                                                                                
                                                                                
          ffptr gopher(ffplist);         Near-функция,принимающая мас-          
                                         сив  из 5  far-указателей  на          
                                         функции, возвращающие целое и          
                                         принимающие far-указатели  на          
                                         целое, и возвращающая один из          
                                         этих указателей.                       
     ННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН          
                                                                                
            Таблица 12.4. Объявление указателей при помощи typedef              
                                                                                
          Как видите,  есть  значительная разница в наглядности и чет-          
     кости восприятия между объявлением gopher при  помощи  typedef  и          
     предыдущим способом объявления.  При грамотном использовании опе-          
     раторов типа typedef и прототипов функций вам легче будет состав-          
     лять, отлаживать и сопровождать ваши программы.                            
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                    Использование библиотечных файлов                           
     ----------------------------------------------------------------           
                                                                                
          Турбо Си предлагает версию стандартных библиотечных подпрог-          
     рамм для каждой из шести моделей памяти.  Применяясь для работы в          
     интегрированной среде (TC), Турбо Си достаточно хорошо приспособ-          
     лен для компоновки требуемых библиотек в нужном порядке в зависи-          
     мости от выбранной вами модели.  Кроме того,  будучи применен как          
     автономный  компилятор (TCC),  Турбо Си достаточно хорошо приспо-          
     соблен для автоматической компоновки.                                      
                                                                                
          Однако, если вы используете непосредственно TLINK (компонов-          
     щик Турбо  Си) как автономный редактор связей,  то вам необходимо          
     точно определить, какие библиотеки использовать. Если вы не соби-          
     раетесь  использовать все 6 моделей памяти,  то вам нужно перепи-          
     сать на рабочий или жесткий диск лишь файлы  используемой  модели          
     (моделей).                                                                 
                                                                                
                                                                                
                                                                                
                                                                                

                         - 363,364 -
                                                                                
                                                                                
          Ниже приведен список библиотечных файлов для  каждой  модели          
     памяти.                                                                    
                                                                                
     ННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН          
          Крохотная              COT.OBJ, MATHS.LIB, CS.LIB                     
          Малая                  COS.OBJ, MATHS.LIB, CS.LIB                     
          Компактная             COС.OBJ, MATHC.LIB, CC.LIB                     
          Средняя                COM.OBJ, MATHM.LIB, CM.LIB                     





Большая COL.OBJ, MATHL.LIB, CL.LIB Огромная COH.OBJ, MATHH.LIB, CH.LIB ННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН Заметим, что крохотная и малая модели используют одни и те же библиотеки, но имеют разные стартовые файлы (COT.OBJ и COS.OBJ). Кроме того, если ваша система имеет математический соп- роцессор 8087/80287, то вам понадобится файл FP87.LIB; если же вы хотите эмулировать 8087/80287, то вам нужен файл EMU.LIB. Приведем несколько примеров командных строк TLINK: tlink c0m a b c, prog, mprog,fp87 mathm cm tlink c0c d e f, plan, mplan, emu mathc cc Первая из командных строк выполнит программу, имя которой PROG.EXE, включающую в себя библиотеки средней модели и скомпоно- ванную в ней библиотеку поддержки 8087/80287. Вторая вызовет программу PLAN.EXE, скомпилированную в виде компактной модели программы, эмулирующей подпрограммы 8087/80287 с плавающей точ- кой, если нельзя воспользоваться сопроцессором. Замечание: Порядок элементов в командной строке очень важен. Модуль (C0x.OBJ) всегда должен стоять на первом месте. Список включенных библиотек должен иметь установленный порядок: - ваши собственные библиотеки (если они имеются); - FP87.LIB или EMU.LIB, следующие за MATHx.LIB (необходимо только при использовании плавающей точки); - Cx.LIB (стандартный файл библиотеки поддержки Турбо Си). (Буква x в модулях C0x, MATHx и Cx заменяется на букву, определя- ющую модель памяти: t,s,m,c,l или h). - 365,366 - Компоновка смешанных модулей ----------------------------------------------------------------- Предположим, что вы скомпилировали один модуль, используя малую модель памяти, а другой - используя большую модель, а затем решили объединить их. Что произойдет? Файлы легко объединятся вместе, но вы столкнетесь с пробле- мами, аналогичными описанным в разделе "Объявление функций как NEAR или FAR". Если функция в малом модуле вызывает функцию в большом модуле, то это происходит при помощи near-вызова, кото- рый, вероятно, будет выполнен неверно. Более того, вы можете на- толкнуться на проблемы, описанные в разделе "Объявление указате- лей как NEAR, FAR или HUGE", поскольку функция в малом модуле предполагает передачу и получение near-указателей, в то время как функция в большом модуле - far-указателей. Решение этих проблем заключается опять-таки в использовании прототипов функций. Предположим, что вы размещаете myputs в его же модуле и компилируете его в большой модели памяти. Тогда вам надо создать заголовок файла MYPUTS.H (или какое-либо другое имя с расширением ".H"), в котором бы содержался следующий прототип функции: void far myputs(char far *s); Теперь,если вы размещаете main в его собственном модуле (с именем MYMAIN.C), делайте это следующим образом: #include #include "myputs.h" main() { char near *mystr; mystr = "Hello, world\n"; myputs(mystr); } Когда вы компилируете эту программу, Турбо Си читает прото- тип функции из MYPUTS.H и воспринимает его как far-функцию, пред- - 367,368 - полагающую наличие far-указателя. Поэтому он сформирует надлежа- щую программу, даже если она скомпилирована с использованием ма- лой модели памяти. Наконец, как же поступать, если вам надо выполнить компонов- ку с библиотечными подпрограммами? Лучше всего в этом случае ис- пользовать одну из библиотек больших моделей, объявив все ее ком- поненты как far. Для этого скопируйте каждый заголовочный файл, который вы обычно используете (такой как STDIO.H) и переименуйте соответствующим образом копии (например, FSTDIO.H). После этого отредактируйте каждый скопированный прототип функции таким образом, чтобы он был однозначно far, например: int far cdecl printf(char far * format, ...);


Страницы : 1 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


adfun.ru









Форум раскрутка сайта и интернет-реклама
реклама - рекламное агентство -
Интернет PR агентство чат и форум
волчат знакомства - сайт знакомств
бесплатные компьютерные игры
фото знакомства
новые стеклопакеты -
качественное остекление балконов
портал - пластиковые окна -
закажите окна пвх в Москве

частная стоматология в Москве:
надежная стоматологическая клиника
протезирование зубов и
отбеливание зубов в стоматологии
Музыка - скачать mp3 музыка
каталог партнерские программы
ручной бесплатный обмен ссылками цифровые камеры цифровые фотоаппараты -
цифровые видеокамеры

театры - заказ билетов в театр -
магазин - продажа компьютеров
в Москве форум Испания - жилье -
недвижимость в испании

турфирма - испания туры
Переводы - бюро переводов
Законы - закон о товарных знаках,
Грузовые перевозки. АсМАП. Дальнобой закон о рекламе
Интернет казино
реклама на форуме и контекстная реклама
на Яндексе Баннерная сеть и
интернет каталог сайтов Holiday.Ru
Форумы политика, лучшие анекдоты
знакомства.