Тура програми на Сі

2.1 Типи файлів у сі.

У мові Сі вихідні файли бувають двох типів:

заголовні, або h-файли;

файли реалізації, або Cі-файли.

Імена заголовних файлів мають розширення ".h". Імена файлів реалізації мають розширення ".c" та ".cpp".

Заголовні файлимістять лише описи. Насамперед, це прототипи функцій. Прототип функції описує ім'я функції, тип значення, що повертається, число і типи її аргументів. Сам текст функції в файлі h не міститься. Також у h-файлах описуються імена та типи зовнішніх змінних, константи, нові типи, структури тощо. Загалом, h-файли містять лишеінтерфейси, тобто. інформацію, необхідну використання програм, вже написаних іншими програмістами (чи тим самим програмістом раніше). Файли заголовків лише повідомляють інформацію про інші програми. При трансляції файлів заголовків, як правило, ніякі об'єкти не створюються. Наприклад, у заголовному файлі не можнавизначитиглобальну змінну. Рядок опису

визначальна цілочисленну змінну x є помилкою. Натомість слід використовувати опис

що змінна x визначена десь у файлі реалізації (у якому - невідомо). Слово extern (зовнішня) лишеповідомляє інформаціюпро зовнішню змінну, але не визначає цю змінну.

assert.hфайл для включення визначає assert макрокоманду, яку Ви можете використовувати для створення умов у ваших програмах.

ctype.hфайл для включення містить визначення та прототипи для підпрограм які

класифікують символи ASCII та підпрограми, які виконують символьні перетворення:

setjmp, longjmp, isalnum, isalpha, iscntrl, isprint, ispunct, isspace,toint, tolower, _tolower

float.hфайл для включення визначає явні константи, які представляють

визначені виконанням властивості чисел з плаваючою комою:

isdigit, isgraph, islower, isupper, isxdigit, toascii, toupper, _toupper

limits.hфайл для включення визначає явні константи, які представляють

певні межі на значеннях, збережених у різних типах даних.

math.hфайл для включення містить прототипи та визначення для всіх підпрограм для

виконання математичних обчислень із плаваючою комою.

setjmp.hфайл для включення визначає тип jmp_buf і моделюєsetjmp

таlongjmpпідпрограми.

stdarg.hфайл для включення визначає макроси, які звертаються до параметрів у функціях

зі списками параметрів змінної довжини.

stddef.hфайл для включення визначаєoffsetofмакрокоманду, до якої Ви можете використовувати

усунення членів структури.

stdio.hфайл для включення містить прототипи та визначення для потокового введення - виводу

підпрограми.stdlib.hфайл для включення містить прототипи та визначення для підпрограм розподілу пам'яті.

string.hфайл для включення містить прототипи для наступного рядка та буфера

Файли реалізації, або Cі-файли, містять тексти функцій та визначення глобальних змінних. Говорячи спрощено, Сі-файли містять самі програми, а h-файли - лише інформацію про програми.

Подання вихідних текстів як заголовних файлів і файлів реалізації необхідне створення великих проектів, мають модульну структуру. Заголовні файли служать передачі інформації між модулями. Файли реалізації -це окремі модулі, які розробляються і транслюються незалежно один від одного і об'єднуються при створенні програми, що виконується.

Файли реалізації можуть підключати описи, що містяться в файлах заголовків. Самі файли заголовків також можуть використовувати інші файли заголовків. Заголовок підключається за допомогою директиви препроцесора #include. Наприклад, описи стандартних функцій введення-виведення включаються за допомогою рядка

(stdio – від слів standard input/output). Ім'я h-файлу записується у кутових дужках, якщо цей h-файл є частиною стандартної Сі-бібліотеки та розташований в одному із системних каталогів. Імена h-файлів, створених самим програмістом в рамках проекту, що розробляється і розташованих у поточному каталозі, вказуються в подвійних лапках, наприклад,

Приклади с. файлів:

calloc.c Розподіляє пам'ять для масиву елементів.

free.c Випускає пам'ять, розподілену з calloc, malloc, або realloc.

getkey.c Чекає на символ, який буде отримано від послідовного порту.

init_mem.c Ініціалізує пул пам'яті, що використовується calloc, malloc, та підпрограмами realloc.

malloc.c Розподіляє блок пам'яті від пам'яті пулу.

putchar.c Передає символ за допомогою послідовного порту.

realloc.c Змінює розмір попередньо розподіленого блоку пам'яті

CARM Компілятор генерує багато файлів протягом трансляції. Кожен файл використовує те самеім'я вихідного файла. Однак кожен має різне розширення.

.LST Файли містять форматований вихідний текст поряд з будь-якими помилками, виявленими компілятором. Лістинг файлів може довільно містити символи, що використовуються і згенеровані асемблерним кодом.

.OBJ Файли - об'єктні модулі, якімістять об'єктний код, що переміщається. Об'єктні модулі можуть бути пов'язані з абсолютним об'єктним модулем.

.I Файли містять вихідний текст розширений препроцесор.

.SRC Файли - згенеровані вихідні файли трансляції вашого вихідного тексту.