Menu
Coddy logo textTech

Include Guard'lar

Coddy'nin C Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 2 / 61.

Bir başlık dosyası bir projeye birden çok kez dahil edildiğinde, derleyici aynı bildirimleri tekrar tekrar görür ve bu da hatalara neden olur. Bu durum genellikle birden çok dosyanın aynı başlık dosyasını dahil etmesi ya da başlık dosyalarının birbirini dahil etmesiyle ortaya çıkar. Include korumaları bu sorunu çözer.

Bir include guard, bir başlık dosyasının içeriğinin yalnızca bir kez işlenmesini sağlamak için üç önişlemci yönergesi kullanır:

// math_utils.h
#ifndef MATH_UTILS_H
#define MATH_UTILS_H

int add(int a, int b);

#endif

İşte şu şekilde çalışır: #ifndef MATH_UTILS_H, MATH_UTILS_H sembolünün henüz tanımlanmamış olup olmadığını kontrol eder. Eğer tanımlanmamışsa, önişlemci devam eder ve onu hemen #define MATH_UTILS_H ile tanımlar. Bu nokta ile #endif arasındaki her şey derlemeye dahil edilir.

Bu başlık dosyası ikinci kez dahil edildiğinde, MATH_UTILS_H zaten tanımlanmış durumdadır, bu nedenle tüm blok atlanır. Koruma adı genellikle, noktaların ve özel karakterlerin yerine alt çizgilerin kullanıldığı, büyük harflerle yazılmış dosya adıdır.

Oluşturduğunuz her başlık dosyasında include korumaları bulunmalıdır. Bu, derleme hatalarını önleyen ve kodunuzu projenizin herhangi bir yerinden güvenle eklemenizi sağlayan standart bir uygulamadır.

challenge icon

Görev

Kolay

Bir başlık dosyasını include guard'lar ekleyerek birden çok kez dahil edilmeye karşı koruyalım. Önceki dersteki selamlama yardımcı programını temel alacaksın; ancak bu kez başlığın birden çok kez dahil edilmesinin güvenli olduğundan emin ol.

İki dosya oluşturacaksın:

  • greet.h: greet işlevinin bildirimini içeren başlık dosyan. Bu kez, tüm içeriği GREET_H simgesini kullanarak include guard'larla sar.
  • main.c: Başlığı dahil eden, greet işlevini uygulayan ve onu main() içinden çağıran ana dosyan.

greet işlevi, ad için bir const char* parametresi kabul etmeli ve şunu yazdırmalıdır:

Hello, Alice!

Başlık dosyan şu yapıyı izlemelidir:

#ifndef GREET_H
#define GREET_H

// function declaration here

#endif

Bir girdi alacaksın: bir ad (dize).

Selamlama mesajını, Alice yerine sağlanan adı koyarak yukarıdaki biçimde tam olarak gösterildiği gibi yazdır.

Kendin dene

#include <stdio.h>
#include "greet.h"

// YAPILACAK: "Hello, <name>!" yazdıran greet fonksiyonunu uygula

int main() {
    char name[100];
    scanf("%s", name);
    
    // YAPILACAK: name değişkeni ile greet fonksiyonunu çağır
    
    return 0;
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online C derleyicisi