C de Koşullu Derleme

Cansiz

New member
C de belki de bazılarına işte esneklik bu dedirtecek bir özellikten bahsetmek istiyorum. Kodunuzun istediğiniz bir parçasının derlenmesini koşullarla yönetebilirsiniz. Bunun için kodlarken sıkça kullandığımız if, else koşullandırma deyimlerini kullanacağız. Bu deyimler bir farkla kodunuzun koşullu derlenmesini sağlarlar. Yazılış farkı. Önüne # işaretini getirerek oluşturacağımız #if #else deyimleri ile sözünü ettiğim koşullu derleme olayı kotarılmış olur. Kullanılış biçimi:

#if Kosul_deyimi

kosul olumlu oldugu takdirde derlenecek kısım

#endif

Örneğin:



#include <stdio.h>



main(void)

{

int a,b;



a=b;

#if a>b

puts(“bu bölüm görünmez”);

#endif

puts(“Burası görünür”);

return 0;

}



Aslında bu kodu derleyiciye derletmeye kalktığınızda hata vermez. Normal derler. Siz programı çalıştırmaya kalktığınızda yine bir hata olmaz. Çalışır program. Ama o #if ve #endif arasındaki kısım çalışmaz. Yine if deyimiyle alakalı else de kullanılır koşullu derlemede. (Koşullu çalıştırma da denilebilir ama o zamanda program çalışma esnasında karar veriliyormuş anlamına geleceği için koşullu derleme diyorum). Else li koşullu derlemeye örnek verecek olursak:



#include <stdio.h>



main(void)

{

int a,b;



a=b;

#if a>b

puts(“bu bölüm görünmez”);

#else

puts(“Bu bölüm görünecek”);

#endif

puts(“Burası da görünecek”);

return 0;

}

Sıklıkla kullandığımız koşul kontrol deyimlerinden olan else if burada #elif halini almıştır. Kullanım şekli :

#if kosul

kod......

#elif kosul

kod......

#elif kosul

kod....

.

.

.

#endif

Yanlış hatırlamıyorsam Standart C de şu an iç içe en fazla yaklaşık 70-80 tane bu şekilde deyim yerleştirilebiliyor.



Koşullu derlemeyi yapacak başka alternatifler de mevcuttur C de. İf defined in kısaltması olan #ifdef ve if not defined in kısaltması olan #ifndef. Uzun isimlerinden de çıkardığınız gibi bu deyimler #define önişlemcisiyle tanımlanan öğeler varsa bu tür koşullu derleme deyimlerini kullanabiliriz. Şöyleki:

#include <stdio.h>

#define MAX 50

main(void)

{

#ifdef MAX

puts(“Burası görünecek.”);

#else

puts(“Burası asla görünmez.”);

#endif

#ifdef MIN

puts(“Burası da görünmez.”);

#endif



return 0;

}

Peki bunları anladınız. Ne işe yarayacak peki gibi bir soru gelirse aklınıza ben bu olayı aklınızın bir köşesinde tutmanızı öneririm. Sistem programlarken zaman ve karmaşıklıktan kurtaran tipte bir esneklik bu. Yararlı olması ümidiyle...

alıntıdır.açılış amacı yardım hh'Dekiler'e​
 

makine04

New member
cansiz kardeşim sağol bunlar yararlı bilgiler ellerin dert görmesin
 

Cansiz

New member
Elimizden gelenlerin en iisini yapmaya çalışıoz!
Memnun ettiysem araştırmalarımla ne mutlu bana!!!:):)
 

HTML

Üst