C Programlama #15 | Başlık Dosyaları ve Değerle Geçirme: #include Ne Yapar?
Fonksiyonlar, Prototipler ve Çağrı YığınıEğitmen: Dr. Süleyman Burak ÇELİK
Dokuz satırlık bir C programı derleyiciye 1050 satır olarak gidiyor. On beşinci derste #include'un gerçekte ne yaptığını, kendi başlık dosyamızı ve argümanların değerle geçirilmesini görüyoruz. gcc -E ile önişlemcinin çıktısına bakıyoruz: iki #include satırının yerine stdio.h ve math.h'nin içeriği geliyor, program 1050 satıra çıkıyor; 837. satırda sqrt'nin prototipi var. Yani bir başlık dosyası eklemek, fonksiyon prototiplerini programın başına kopyalamak demek; tanımlar hazır derlenmiş kütüphanede. Standart başlıkları (stdio.h, math.h, stdlib.h, string.h, ctype.h, time.h) tanıyor, ardından kendi başlık dosyamızı yazıyoruz: geometri.h prototipleri, geometri.c tanımları tutuyor, daire.c başlığı tırnakla ekliyor; açılı parantez ile tırnağın farkını görüyoruz. İki .c dosyasını birlikte derleyince yarıçap 3 için alan 28.27, çevre 18.85 (elle de kontrol ediyoruz). geometri.c unutulunca gerçek bir Linux sunucusunda bağlayıcının verdiği undefined reference hatasını inceliyoruz. İkinci bölümde değerle geçirme: fonksiyon puanı 80 yapıyor ama main'deki puan 70 kalıyor. lldb ile iki ayrı puan değişkenini farklı adreslerde görüyor, sonucu return ile döndürüp çağıran yerde atayarak düzeltiyoruz. Ekrandaki her çıktı, kodun gerçekten derlenip çalıştırılmasından geliyor. Bu derste: 1. #include önişlemci komutu: başlığın içeriği programa kopyalanır (gcc -E) 2. Standart başlık dosyaları ve içlerindeki prototipler 3. Kendi başlık dosyamız: .h prototipler, .c tanımlar, tırnakla ekleme 4. Tanım dosyası unutulursa bağlayıcı hatası (undefined reference) 5. Değerle geçirme: fonksiyon bir kopyayla çalışır; sonucu return ile döndür Bölümler: 0:00 Başlık dosyaları ve değerle geçirme 0:12 Dokuz satırlık program, derleyicide kaç satır? 0:36 #include: dosyanın içeriği buraya kopyalanır 1:13 Standart başlık dosyaları 1:43 Kendi başlık dosyamız 2:32 Tanım dosyası unutulursa: bağlayıcı hatası 2:58 Fonksiyon puanı değiştirdi, main'deki puan? 3:20 Değerle geçirme: fonksiyon bir kopya alır 3:50 Doğrusu: return ile döndür, çağıran yerde ata 4:05 Neden değerle geçirme? 4:26 Bugünün dört kuralı 4:55 Sonraki ders: rastgele sayılar Kaynak kitap: Paul Deitel, Harvey Deitel — C How to Program, 9. baskı (2022), §5.8–5.9. Konu sırası ve kavramlar kaynak kitaptan izlenir; anlatım, örnekler ve ekranlar özgündür. Hedef kitle: C'ye yeni başlayan tüm mühendislik ve bilgisayar/yazılım öğrencileri. Ön koşul: C Programlama #01–#14.