русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Файли заголовка


Дата додавання: 2014-11-28; переглядів: 834.


Давайте розглянемо тепер поділ програми-калькулятора на декілька вихідних файли, так ніби кожна з її складових була значно більшою. Функція main опинилася би в одному файлі, який ми назвали би main.c; push, pop і їхні змінні розміщено би у другому, stack.c; getop у третьому — getop.c. Ми розділили їх одне від одного, оскільки вони складали би окремо компільовану бібліотеку у справжній програмі.

Існує ще одна річ, про яку варто потурбуватися — це визначення і оголошення, спільно використовувані цими файлами. Наскільки це можливо, ми би хотіли зосередити ці речі у одному місці, тож існуватиме тільки одна копія, яку буде прочитано і яку слід підтримувати у робочому стані під час розвитку програми. Відповідно, ми помістимо цей спільний матеріал у файлі заголовка calc.h, який буде включено у разі потреби. (Рядок #include описано у Розділі 4.11.) Отримана в результаті програма може виглядати так:

calc.h:

+---------------------+

| #define NUMBER '0' |

| void push(double); |

| double pop(void); |

| int getop(char []); |

| int getch(void); |

| void ungetch(int); |

+---------------------+

 

main.c:

+---------------------+

| #include <stdio.h> |

| #include <stdlib.h> |

| #include "calc.h" |

| #define MAXOP 100 |

| main() { |

| ... |

| } |

+---------------------+

 

getop.c: stack.c:

+--------------------+ +---------------------+

| #include <stdio.h> | | #include <stdio.h> |

| #include <ctype.h> | | #include "calc.h" |

| #include "calc.h" | | #define MAXVAL 100 |

| getop() { | | int sp = 0; |

| ... | | double val[MAXVAL]; |

| } | | void push(double) { |

+--------------------+ | ... |

| } |

getch.c: | double pop(void) { |

+---------------------+ | ... |

| #include <stdio.h> | | } |

| #define BUFSIZE 100 | +---------------------+

| char buf[BUFSIZE]; |

| int bufp = 0; |

| int getch(void) { |

| ... |

| } |

| void ungetch(int) { |

| ... |

| } |

+---------------------+

Треба знайти компроміс між бажанням, щоб кожний файл мав доступ тільки до інформації, потрібної для здійснення свого завдання і практично дійсністю того, що важко підтримувати у робочому стані багато файлів заголовка. У випадку програм помірного розміру, напевне, найкраще мати одих файл заголовка, який міститиме спільні дані для інших частин програми; саме це рішення ми продемонстрували тут. Для більших програм, може виникнути потреба в суттєвішій організації і більшій кількості файлів заголовка.


<== попередня лекція | наступна лекція ==>
Правила області дії | Статичні змінні


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн