1. Модульне програмування. Багатофайлові проєкти

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

При такій структурі функції, що знаходяться в різних файлах можуть використовувати глобальні зовнішні змінні. Всі функції в мові С, за замовчуванням, зовнішні і завжди доступні з будь-яких файлів. Наприклад, якщо програма (проєкт) складається із двох файлів, то функція main може викликати будь-яку з трьох функцій fun1, fun2, fun3, а кожна з цих функцій може викликати будь-яку іншу:

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

Область видимості змінної визначається межами блоку, який у С обмежується фігурними дужками. Існують два основні типи блоків: складений оператор та визначення функції. Внутрішні блоки називають вкладеними, а зовнішні - осяжними.

Час життя змінної може бути локальним (діє тільки під час виконання блоку) або глобальним (існує протягом усього часу виконання програми). Усі функції в мові С мають глобальний час життя.

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

Приклад:

------------ file1.c ------------
main() {
      …
}

fun1() {
      long int i[];
      …
}

------------ file2.c ------------
long int i[MAX]={0};
fun2(){
        …
}

fun3(){
       …
}

Перше оголошення змінної i[] в наведеному прикладі робить її видимою всередині функції fun1(). Визначення цієї змінної у файлі file2.c робить її видимою у функціях fun2() та fun3().
 
Оголошення функцій
Оголошення функції складається з типу значення, що повертається, імені та списку параметрів. Разом ці три елементи складають прототип. Оголошення може з'явитися у файлі декілька разів.
Оголошення функцій найкраще поміщати в файли із заголовками (хедер-файли, файли з розширенням «h»), які можуть включатися всюди, де необхідно викликати функцію. Таким чином, всі файли використовують одне спільне оголошення. 
 
Включення хедер-файлів
Хедер-файли включаються в текст програми за допомогою директиви препроцесора #include. Директиви препроцесора починаються зі знака «#». 
Програма, яка обробляє ці директиви, називається препроцесором (в сучасних компіляторах препроцесор, зазвичай, є частиною самого компілятора).
Директива #include включає в програму вміст зазначеного файлу. Файл може бути зазначено двома способами:
 
#include <path_specification>
#include " path_specification"
 
Якщо ім'я файлу вказано в кутових дужках (<>), то пошук файла для включення ведеться у наперед визначених місцях (залежить від реалізації).
Якщо ім’я файлу вказано у лапках, то якщо це повне ім’я файлу, то пошук ведеться лише за вказаним шляхом.
Якщо ім’я файла неповне, то пошук починається від каталогу розташування файл, що містить директиву включення.
Якщо такий пошук не вдався, то пошук повторюється так, як для форми із кутовими дужками, тобто у наперед визначених каталогах.
Перелік цих каталогів може бути задано ключем компілятора чи змінною оточення. Хедер-файл також може містити директиви #include.
Доступність

Шрифти Шрифти

Розмір шрифта Розмір шрифта

1

Колір тексту Колір тексту

Колір тла Колір тла

Кернінг шрифтів Кернінг шрифтів

Видимість картинок Видимість картинок

Інтервал між літерами Інтервал між літерами

0

Висота рядка Висота рядка

1.2

Виділити посилання Виділити посилання

Вирівнювання тексту Вирівнювання тексту

Ширина абзацу Ширина абзацу

0