Darsliklar C Preprosessor tushunchasi

C C Preprosessor tushunchasi

Preprosessor — kompilyatsiyadan oldin ishlaydigan maxsus bosqich. U kodni haqiqiy kompilyatsiyaga tayyorlaydi: kutubxonalarni ulaydi, doimiylarni almashtiradi, kod qismlarini shartli qo’shadi. Preprosessor buyruqlari # belgisi bilan boshlanadi va C’ning o’ziga xos, kuchli imkoniyatidir.

Preprosessorkompilyatsiyadan oldin manba kodni qayta ishlaydigan dastur. Uning direktivalari (#include, #define, #if) # bilan boshlanadi va nuqta-vergulsiz yoziladi.

#include — kutubxona ulash

Eng ko’p ishlatiladigan direktiva — #include. U boshqa faylning tarkibini shu joyga qo’shadi:

#include <stdio.h>   /* standart kutubxona */

int main(void) {
    printf("UzbekDevs\n");
    return 0;
}
UzbekDevs

#include <stdio.h>printf kabi funksiyalarni ulaydi. Burchak qavs < > — standart kutubxonalar uchun, qo’shtirnoq " " esa o’z fayllaringiz uchun ishlatiladi.

#define — doimiy va almashtirish

#define matnni kompilyatsiyadan oldin almashtiradi. U doimiy yaratishda ishlatiladi:

#include <stdio.h>

#define PI 3.14159
#define SAYT "UzbekDevs"

int main(void) {
    printf("Pi: %.2f\n", PI);
    printf("Sayt: %s\n", SAYT);
    return 0;
}
Pi: 3.14
Sayt: UzbekDevs

Preprosessor kodda uchragan har bir PI ni 3.14159 ga almashtiradi. Bu — matnni oddiy almashtirish, shuning uchun PI turga ega emas.

Preprosessor direktivalari

Asosiy direktivalarni jadvalda ko’ramiz:

Direktiva Vazifasi
#include fayl tarkibini qo’shadi
#define doimiy yoki makros yaratadi
#ifdef / #ifndef shartli kompilyatsiya
#endif shartli blokni yopadi

Shartli kompilyatsiya

Preprosessor kod qismlarini shartga qarab qo’shishi yoki tashlashi mumkin. Bu ko’pincha kutubxona fayllarining ikki marta ulanishini oldini olishda ishlatiladi:

#include <stdio.h>

#define DEBUG

int main(void) {
    #ifdef DEBUG
        printf("Debug rejimi yoqilgan\n");
    #endif
    printf("Dastur ishlamoqda\n");
    return 0;
}
Debug rejimi yoqilgan
Dastur ishlamoqda

#ifdef DEBUGDEBUG aniqlangan bo’lsagina, ichidagi kod kompilyatsiyaga qo’shiladi. Bu nosozliklarni tekshirish kodini oson yoqib-o’chirishda foydali.

Xulosa

Bu bo’limda preprosessor tushunchasini, #include, #define direktivalarini va shartli kompilyatsiyani (#ifdef) ko’rib chiqdik. Preprosessor — kompilyatsiyadan oldingi kuchli bosqich. Keyingi darsda makroslarni chuqurroq ko’rib chiqamiz.