0Pricing
C Academy · Ders

#define Sabitleri

Önişlemci sabitlerini kullanın.

#define Sabitleri, CoddyKit'te ücretsiz bir C Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C Academy kursu toplamda 4 dersten oluşur.

#define Ne Yapar

#define, bir makro oluşturan önişlemci yönergesidir: Önişlemci, derlemeden önce bu makronun adını metinle değiştirir.

Genellikle arabellek boyutu veya sınır gibi sabit bir değere okunabilir bir ad vermek için kullanılır.

#define MAX_LEN 256

Metin Yerine Koyma

Makro, yalnızca metin yerine koyma işlemidir. MAX_LEN nerede görünürse önişlemci oraya 256 yazar.

Tür veya bellek yoktur; işlem, derleyici kodu görmeden önce gerçekleşir.

#include <stdio.h>
#define MAX_LEN 256
int main(void) {
    printf("%d\n", MAX_LEN);
    return 0;
}

Noktalı Virgül Yok

Yaygın bir hata, #define yönergesinin sonuna noktalı virgül koymaktır.

Noktalı virgül, yerine koyma metninin bir parçası olur ve anlaşılması zor hatalara yol açabilir. Noktalı virgül eklemeyin.

#define PI 3.14159     /* correct */
#define BAD 10;        /* wrong: semicolon is substituted too */

Ondalıklı Sabit Tanımlama

Makrolar, kayan noktalı değerler de dahil olmak üzere her türlü sabit için kullanılabilir.

Burada PI, her kullanımda alan formülüne yerleştirilir.

#include <stdio.h>
#define PI 3.14159
int main(void) {
    double r = 2.0;
    printf("%.2f\n", PI * r * r);
    return 0;
}

Dizi Boyutları için Makrolar

Makrolar, değerinin derleme zamanında bilinmesi gerektiği için dizilerin boyutunu belirlemede sıkça kullanılır.

Bir ad kullanmak, boyutu tek bir yerde tutar ve değiştirmeyi kolaylaştırır.

#include <stdio.h>
#define SIZE 5
int main(void) {
    int data[SIZE] = {1, 2, 3, 4, 5};
    printf("%d\n", data[SIZE - 1]);
    return 0;
}

İfadeleri Her Zaman Paranteze Alın

Bir makro bir ifadeye genişliyorsa onu parantez içine alın.

Parantezler olmadan işleç önceliği, makro daha büyük bir ifadenin içinde kullanıldığında anlamı değiştirebilir.

#define WIDTH (4 + 2)   /* good */
#define BADW 4 + 2       /* risky: 10 * BADW becomes 10*4+2 */

Parantezler Neden Önemlidir

Bu program aradaki farkı gösterir. Parantezlerle WIDTH bir bütün olarak çarpılır; parantezler olmadan yalnızca bir bölümü çarpılır.

Güvenli sürüm 60 yazdırır; güvensiz genişletme ise farklı bir sonuç hesaplar.

#include <stdio.h>
#define WIDTH (4 + 2)
int main(void) {
    printf("%d\n", 10 * WIDTH);
    return 0;
}

Dize Makroları

Makrolar, sabit dizeleri de temsil edebilir; bu, sabit iletiler veya sürüm adları için kullanışlıdır.

Metin, tırnaklar dahil olmak üzere tamamen aynı şekilde yerine konur.

#include <stdio.h>
#define APP_NAME "CoddyKit"
int main(void) {
    printf("Welcome to %s\n", APP_NAME);
    return 0;
}

#define ve const

Makronun türü ve adresi yoktur; const değişkeninin ikisi de vardır ve kapsam kurallarına uyar.

Tür güvenliği ve hata ayıklama sırasında görünürlük istediğinizde const kullanmayı tercih edin. Dizi boyutları gibi derleme zamanında belirlenen sabitler için #define kullanın.

#define M_SIZE 10
const int c_size = 10;

Makroyu Kaldırma ve Korumalar

Bir makroyu #undef ile kaldırabilirsiniz. Makrolar, bir başlık dosyasının iki kez dahil edilmesini önleyen başlık dosyası korumalarını da mümkün kılar.

Burada başlık dosyalarının üst kısmında kullanılan klasik koruma kalıbı gösterilir.

#ifndef CONFIG_H
#define CONFIG_H
/* header contents here */
#endif

Geleneksel Adlandırma

Uzun süredir devam eden geleneğe göre makro adları BÜYÜK_HARF biçiminde yazılır.

Bu yazım, bunların önişlemci sabitleri olduğunu görsel olarak belirtir ve normal değişken adlarıyla çakışmalarını önlemenize yardımcı olur.

#include <stdio.h>
#define BUFFER_SIZE 1024
int main(void) {
    printf("%d\n", BUFFER_SIZE);
    return 0;
}

Kısa Sınama

Makrolar konusundaki anlayışınızı sınayın.

Özet

#define, önişlemcinin metin olarak yerine koyduğu; türü, noktalı virgülü ve belleği olmayan makrolar oluşturur.

İfadeleri paranteze alın ve tür güvenliği sağlayan değerler için const kullanmayı tercih edin; makroları ise dizi boyutları ve başlık dosyası korumaları gibi derleme zamanı gereksinimleriyle sınırlayın.

Sıkça Sorulan Sorular

“#define Sabitleri” dersi ücretsiz mi?

Evet — “#define Sabitleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C Academy kursu toplamda 4 dersten oluşur.

“#define Sabitleri” dersinde ne öğreneceğim?

Önişlemci sabitlerini kullanın. C Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

C Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te C Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“#define Sabitleri” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu C Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her C Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Enum Tanımlama
  2. Enum Değerleri ve Aralıklar
  3. const Değişkenleri
  4. #define Sabitleri
← C Academy Sayfasına Dön