CodeBlanks Logo Icon CodeBlanks

extern

  • C kursu
  • Orta seviye
  • Ders 60/116
  • 5 dk

extern ile global değişken paylaşmayı öğrenirsin.

extern anahtar sözcüğü

extern, bir değişkenin başka bir dosyada tanımlandığını bildirir. Header'a extern int counter; yazarsın; kaynak dosyalardan biri int counter = 0; tanımı yapar. Diğer dosyalar header'ı ekleyip counter'ı kullanır.

extern bir bildirimdir, tanım değil; bellek ayırmaz. Birden çok .c dosyası aynı globali paylaşabilir. Tanım yalnızca bir dosyada olmalı; aksi halde bağlayıcı hata verir. Bu mekanizma modüller arası durum paylaşımı için standarttır; config bayrakları, sayaçlar ve hata kodları için kullanılır.

extern ve tanım

Bir global değişkeni paylaşmak için: header'a extern int counter; yaz, bir .c dosyasına int counter = 0; tanımı koy. Tanım dosyası genellikle modülün kendi .c'sidir; örneğin counter.c.

Her .c dosyası #include "counter.h" yaptığında counter'ı görür ve kullanır. Tanımda başlangıç değeri vermek zorunlu değildir ama önerilir; sıfırlanmamış global'ler C'de otomatik sıfır olur ama yine de açık yazmak daha okunurdur. Birden çok tanım bağlayıcı hatasıdır; tek bir tanım ilkesine uy.

Uygulama extern globali kullan

Tek dosyada simüle et: extern int counter; bildirimi yap, sonra int counter = 5; tanımı yap. int main(void) içine counter += 10; ve printf("%d\n", counter); ekle. <stdio.h> başlığını unutma.

Başlangıç kodu

main.c
#include <stdio.h>

// extern ile counter bildirimi
// counter'a 5 değeri tanımı

int main(void) {
    // counter'ı 10 artır ve yazdır
    return 0;
}

Örnek çözüm

main.c
#include <stdio.h>

extern int counter;
int counter = 5;

int main(void) {
    counter += 10;
    printf("%d\n", counter);
    return 0;
}

Beklenen çıktı

15

Soru ve cevaplar

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

1 extern bildirimini tamamla

Soru
/* config.h */
____ int debug_mode;
Cevap
/* config.h */
extern int debug_mode;

Açıklama: extern int debug_mode; bildirimi tanımı başka dosyaya bırakır.

2 Birden çok .c dosyası aynı globali paylaşırsa ne olur?

  • Hiçbir dosya tanım yapamaz
  • Header'da tanım yapılır
  • Her dosya tanım yapmalı
  • Yalnızca biri tanım yapar Doğru cevap

Açıklama: Tanım tek dosyada, diğerleri extern ile bildirir.

3 extern sözcüklerini eşle

Kavram Anlamı
extern int x; Header bildirimi
int x = 0; Kaynak tanımı
#include "x.h" Header ekleme
linker Tanımları birleştiren

Orta seviye bölümündeki tüm dersler