Directive directe de compilare

Există mai multe directive care vă permit să compilați selectiv părți ale codului sursă al programului dvs. Acest proces este numit compilație condiționată și este utilizat pe scară largă de către companiile care trăiesc pe programe comerciale - acelea care furnizează și suportă multe versiuni speciale ale aceluiași program.







Directive #if, #else, #elif și #endif

Poate că cele mai comune directive pentru compilația condiționată sunt #if. #else. #elif și #endif. Acestea permit, în funcție de valoarea expresiei constante, includerea sau excluderea acestor sau a altor părți ale codului.

În general, directiva #if arată astfel:

Dacă expresia # este constantă, atunci codul care se află între această expresie și #endif este compilat. În caz contrar, acest cod intermediar este omis. Directiva #endif reprezintă sfârșitul #if. De exemplu,

Acest program afișează un mesaj pe ecran, deoarece MAX este mai mare de 99. Acest exemplu prezintă ceva foarte important. Valoarea expresiei din spatele directivei #if. trebuie să fie calculate la momentul compilării. Prin urmare, în această expresie pot exista numai identificatori și constante definite anterior, dar nu și variabile.

Direcția #else funcționează mai mult ca alt cuvânt cheie, cuvântul cheie C: stabilește o alternativă în cazul în care condiția #if nu este îndeplinită. Exemplul anterior poate fi completat după cum urmează:







În acest caz, se dovedește că MAX este mai mic de 99, deci o parte a codului aferent #if. nu compilate. Cu toate acestea, un cod alternativ care este legat de #else este compilat. iar programul compilat va afișa mesajul Compilează pentru o matrice mică.

Rețineți că directiva #else este utilizată pentru a indica sfârșitul blocului #if. și începutul blocului #else. Acest lucru este normal, deoarece nu există decât o singură directivă #endif pentru nici o directivă.

Direcția #elif înseamnă "altceva dacă" și setează lanțul if-else-if pentru o varietate de opțiuni de compilare. După #elif există o expresie constantă. Dacă această expresie este adevărată, atunci blocul de cod din spatele ei este compilat și nu sunt verificate alte expresii #elif. În caz contrar, se verifică următorul bloc al acestei secvențe. În general, #elif arată astfel:

De exemplu, în următorul fragment, ACTIVE_COUNTRY (pentru ce țară) este utilizat pentru a determina simbolul valutei:

În conformitate cu standardul C89, directivele #if și # elif pot avea cel puțin 8 nivele de cuibărit. În conformitate cu standardul C99, programatorilor li se permite să utilizeze cel puțin 63 de niveluri de cuibărire. Când sunt imbricate, fiecare directivă #endif. #else sau #elif se referă la cea mai apropiată directivă #if sau #elif. De exemplu, următorul fragment de cod este perfect corect:

Direcțiile #ifdef și #ifndef

Un alt mod de compilare condiționată este utilizarea directivelor #ifdef și #ifndef. care înseamnă respectiv "dacă este definit" (dacă este definit) și "dacă nu este definit" (dacă nu este definit). În general, #ifdef arată astfel:

Blocul de coduri va fi compilat dacă numele macrocomenzii a fost definit mai devreme în instrucțiunea #define.

În general, instrucțiunea #ifndef arată astfel:

Blocul de cod va fi compilat dacă numele macro nu este încă definit în instrucțiunea #define.

Și în #ifdef. și puteți folosi #else sau #elif în #ifndef. De exemplu,

va ieși Bună ziua, Ted. Și, de asemenea, un RALPH nu este definit, t.ch. Ralph nu avea noroc.







Articole similare

Trimiteți-le prietenilor: