C++

Makroslar

Makroslar

Biz indiyə kimi proqramlarda #include<iostream>, #include<string.h> kimi sətirlərdən istifadə etdik və qeyd etdik ki, proqramın mətninə bu sətirlərin əlavə olunması bizə std::cout, std::cin, new, delete, strcpy... kimi funksiyalardan istifadə etməyə imkan verir. Hər hansı bir funksiyadan proqramda istifadə edə bilmək üçün proqrama bu funksiyanın elanı (adı və parametrlərinin qeyd edildiyi sətir) və mətni (funksiyanın kod hissəsi) verilməlidir. Biz öz funksiyalarımızı tərtib edərkən həm elanı, həm də mətni eyni faylda yerləşdirirdik. Kompilyator imkan verir ki, biz ayrı-ayrı fayllarda elan olunmuş funksiya və dəyişənlərə öz proqramımızdan müraciət edə bilək.

Bunun üçün #include direktivindən istifadə edirlər.

#include<fayl.h> və ya #include"fayl.h" kimi.

Bir qayda olaraq, proqrama #include vasitəsilə əlavə olunan faylların sonu .h ilə bitir. Sadə proqram nümunəsinə baxmağımız kifayətdir. İndiyə kimi baxdığımız nümunələrdə bütün proqram kodunu bir fayla yerləşdirirdik.

İndi isə, bizə iki və daha çox fayl lazım olacaq:

Dəyişənlərin, funksiyaların elan olunduğu başlıq fayllar və bu dəyişən və funksiyalara müraciət edən proqram kodu faylları.

Proqram 1.

mənim_faylim.h faylının mətni


// prg_11_1.cpp

/* başlıq faylı mənim_faylim.h */ 

#ifndef MƏNIM_FAYLIM_H 
#define MƏNIM_FAYLIM_H 

int yeni_dəyişən; 

#endif 

// proqram kodu prog2.cpp faylının mətni
#include <iostream> 
#include "mənim_faylım.h" 

int  main() 
{ 

yeni_deyişən =  5; 

std::cout<< " yeni dəyişən "  
<<yeni_dəyişən<< "  \n  " ; 
}

Nümunə

Proqramı yerinə yetirək.


C:\cpp\prog2\Debug>  
C:\cpp\prog2\Debug>prog2.exe  
yeni dəyişən 5  
C:\cpp\prog2\Debug>  
C:\cpp\prog2\Debug> 

mənim_faylım.h faylındakı

#ifndef

#define

#endif

makrosları mənim_faylım.h faylının bizim proqrama sonsuz əlavə olunmasının qarşısını alır. mənim_faylım.h başlıq faylında biz int tipli yeni_dəyişən dəyişəni elan edirik. Daha sonra, prog2.cpp faylında yeni_dəyişən dəyişəninə müraciət edirik.

Əgər diqqət yetirdinizsə biz iostream faylını < və > vasitəsilə, menim_faylim.h faylını isə, " və " simvolları vasitəsilə proqrama əlavə etdik. Bu, kompilyatora mənim_faylım.hbaşlıq faylının standart deyil, bizim tərəfimizdən yaradıldığını bildirir və kompilyator bu faylı bizim proqram yerləşən qovluqda axtarır.

 

MAKROSLAR

C++ dilində istifadə olunan digər əhəmiyyətli vasitələrdən biri də makroslardır. Makroslar 2 cür olur: şərt makrosları və təyin makrosları.

 

Təyin makrosları

Təyin makrosları #define direktivindən istifadə olunaraq yaradılır. Təyin makrosları hər hansı bir ifadənin başqa ifadə ilə əvəz edilməsinə xidmət edir. Misal üçün, əgər biz proqramın hər hansı yerində #define MAX_QIYMET 1024 sətrini yerləşdiririksə, onda kompilyator proqramda MAX_QIYMET ifadəsinə rast gəldiyi bütün yerlərdə onu 1024 ilə əvəz edəcək.

Sadə proqrama baxaq:


#define MAX 8

int main() 
{ 
int i,x[MAX]; 

for (i= 0, i<MAX; ++i) 
x[i]=i; 

return 0; 
} 

Bu proqram 8 elementli tam tipli x cərgəsi elan edir və onun elementlərinə 0-dan 7-yə kimi qiymətlər mənimsədir.

 

Şərt makrosları

Şərt makrosları #ifdef, #ifndef, #endif direktivlərindən istifadə olunaraq yaradılır. Şərt makrosları bizə imkan verir ki, müəyyən şərtdən asılı olaraq proqramın hər hansı hissəsinin kompilyator tərəfindən nəzərə alınmamasını təmin edək.

Sintaksis belədir:

#if şərt

proqram kodu

#endif

Bu zaman əgər şərt 1 qiyməti alarsa, onda kompilyator proqram kodu hissəsini nəzərə alacaq, əks halda isə, bu hissə kompilyator tərəfindən inkar ediləcək, başqa sözlə, şərh kimi qəbul olunacaq.