Cansiz
New member
- Katılım
- 7 Ocak 2006
- Mesajlar
- 2,048
- Reaction score
- 0
- Puanları
- 0
- Yaş
- 35
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...
#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