CodeBlanks Logo Icon CodeBlanks

Koşullu derleme

  • C kursu
  • Başlangıç
  • Ders 108/116
  • 5 dk

#ifdef, #ifndef ve #endif ile koşullu derlemeyi öğrenirsin.

Koşullu derleme: #ifdef, #ifndef, #endif

#ifdef bir makro tanımlıysa, #ifndef tanımlı değilse kodu derler. #endif ise bloğu kapatır.

#define DEBUG

#ifdef DEBUG
    printf("hata ayikla");
#endif

Burada DEBUG tanımlıysa printf derlenir; değilse atlanır. Bu, hata ayıklama kodunu üretim derlemesinden çıkarmak için kullanışlıdır. #ifndef ile bir makro yoksa özel kod çalıştırabilirsin. Bu yöntem, tek kaynak kodundan farklı sürümler üretmeyi sağlar.

#ifndef ile koşullu tanımlama

#ifndef bir makro tanımlı değilse içeriği derler. Bu, bir sabitin varsayılan değerini vermek için kullanışlıdır.

#ifndef VERSION
    #define VERSION 1
#endif

Burada VERSION daha önce tanımlanmadıysa 1 olur. Derleyici komut satırından -DVERSION=2 ile farklı bir değer verilebilir. Bu, başlık dosyalarında include guard olarak da kullanılır; ileriki derste göreceğiz. Esnek ve taşınabilir kod yazmanın önemli bir aracıdır.

Uygulama DEBUG makrosu ile koşullu yazdır

#define DEBUG ile bir makro tanımla. main içinde #ifdef DEBUG ile printf("debug\n") yaz; bloğu #endif ile kapat.

Başlangıç kodu

main.c
#include <stdio.h>

// DEBUG makrosunu tanımla
int main(void) {
    // DEBUG tanımlıysa printf ile debug yaz; bloğu kapat
    return 0;
}

Örnek çözüm

main.c
#define DEBUG
#ifdef DEBUG
printf("debug\n");
#endif

Beklenen çıktı

debug

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Boşluğu doldur: #ifdef bloğu

Soru
#ifdef DEBUG
    printf("hata ayikla");
____
Cevap
#ifdef DEBUG
    printf("hata ayikla");
#endif

Açıklama: #endif ile #ifdef bloğu kapatılır.

2 Komut ve anlam eşleştir

Kavram Anlamı
#ifdef X X tanımlıysa
#ifndef X X tanımlı değilse
#endif Bloğu bitirir
#define X X tanımlar

3 #endif ne işe yarar?

  • #ifdef bloğunu başlatır
  • Programı sonlandırır
  • Değişken tanımlar
  • #ifdef bloğunu bitirir Doğru cevap

Açıklama: #endif bir #ifdef veya #ifndef bloğunu kapatır.

Başlangıç bölümündeki tüm dersler