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");
#endifBurada 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
#endifBurada 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
#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
#define DEBUG
#ifdef DEBUG
printf("debug\n");
#endifBeklenen çı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
#ifdef DEBUG
printf("hata ayikla");
____
#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.