Для отримання виконуваного коду написана на С/C++ програма повинна бути скомпільована; за своєю суттю процес компіляції такий же, як і для PASCAL чи іншої мови.
Розглянемо усі етапи від написання тексту до формування вихідного коду.
Текст програми на C/C++ може бути поділений на окремі фрагменти, однак принаймні один з них має містити код функції main() при виклику компілятора спочатку текст проходить фазу препроцесінга, тобто текст видозмінюється і доповнюється через дію відповідних директив препроцесора1.
Далі проводиться читання і аналіз тексту програми, і якщо не знайдені помилки, то генерується об’єктний код.
Потім об’єктний код перевіряється на наявність імен і операцій, які використовувалися, але не були визначені (у нашому випадку це printf). Якщо це можливо, то програма робиться повною за допомогою доповнення бракуючих визначень із бібліотеки (в основому це – стандартні бібліотеки, але користувачі можуть створювати свої власні). Це є етап редагування зв’язків або лінкування.
У нашому випадку printf були описані в stdio.h, але не було дано ніяких подробиць відносно їх реалізації. У стандартній бібліотеці міститься специфікація і код, що ініціалізує, printf. Насправді, в цій бібліотеці міститься і багато інших речей, частина з яких описана в stdio.h, проте до скомпільованої версії додається тільки підмножина бібліотеки, необхідна для того, щоб зробити нашу програму повною. Команда компіляції в GNU C11. Ви можете її скомпілювати і запустити приблизно так ($ - системне запрошення):
1$/usr/bin/gcc -fdiagnostics-color=always -g /home/aspose/dev-club-cpp/helloworld.c -o /home/aspose/dev-club-cpp/helloworld
2$./helloworld
3
4Hello, world!
./helloworld – це ім’я виконуваного результату, що приймається по замовчуванню компіляції.
Введення
Наступна (досить багатослівна) програма пропонує вам ввести число дюймів. Після того, як ви це зробите, вона надрукує відповідне число сантиметрів.
1#include <stdio.h>
2
3int main(void)
4{
5 int inch = 0; // inch - дюйм
6 printf("inches=");
7 scanf("%d", &inch);
8 printf("%d in = %f cm\n", inch, inch * 2.54);
9 return 0;
10}
Перший рядок функції main() описує цілу змінну inch. Її значення прочитується за допомогою виклику scanf («узяти із стандартного потоку введення»). Опис scanf знаходяться в <stdio.h>. Після її запуску наш термінал може виглядати приблизно так:
1inches=12
212 in = 30.480000 cm
3[1] + Done
У подальших розділах введення і виведення будуть описані набагато детальніше. Цей розділ фактично може розглядатися як пояснення того, як можна написати наведені вище програми на мові С.
-
Директиви препроцесора позначаються # на початку рядка. #include означає включити в текст програми заданий файл. ↩︎
Коментарі