Forum: D Programlama Dili RSS
dmd'nin -dip25 seçeneği
acehreli (Moderatör) #1
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: dmd'nin -dip25 seçeneği
Bu derleyici seçeneğini yeni öğrendim.

D'ye oldukça yararlı bir olanak eklenmişti:

  http://ddili.org/ders/d/islev_parametreleri.html#ix_islev_…

O olanak sayesinde 'ref' parametreleri 'return' olarak işaretleyebiliyoruz ve belirgin bir program hatasından korunmuş oluyoruz.

Ancak, derleyiciden bu yardımı alabilmek için 'return' anahtar sözcüğünü açıkça yazmak zorundayız. Daha iyisi, bu olanağın parametreye 'return' anahtar sözcüğü eklenmeden de işlemesi olurdu. (Mevcut programları bozmamak adına böyle değil.) Örneğin, derleyici aşağıdaki gibi işlevlere hiç izin vermeyebilirdi:
ref int fun(ref int a) {
    return a;    // <-- Şüpheli kod! Ya parametrenin yaşamı kısa ise?
}
dmd'nin -dip25 seçeneği böyle şüpheli durumlarda hata verilmesini sağlıyor:
ref int fun(ref int a) {
    return a;    // <-- -dip25 kullanıldığında DERLEME HATASI
}
Derleyici hatasından kurtulmanın yolu, parametreyi 'return' olarak tanımlamak:
ref int fun(return ref int a) {
    return a;    // <-- -dip25 kullanıldığında bile derlenir
}
Benim anladıklarımın özeti:

  • -dip25 kullanılmadığında, işlevden döndürülen 'ref' parametrelerin yalnızca 'return' olarak işaretlenmiş olanları denetleniyor

  • -dip25 kullanıldığında ise, işlevden döndürülen 'ref' parametrelerin 'return' olarak işaretlenmeleri şart koşuluyor; dolayısıyla, hepsinin güvenliği denetlenmiş oluyor

DIP25, "25 numaralı D Improvement Proposal" demek:

  http://wiki.dlang.org/DIP25

Ek bilgi olarak, bütün DIPler şurada:

  http://wiki.dlang.org/DIPs

Ali
Bu mesaj acehreli tarafından değiştirildi; zaman: 2015-09-22, 16:10.
nurullahisrgan #2
Üye Ock 2015 tarihinden beri · 76 mesaj · Konum: Mardin, Nusaybin
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Dipler önemliymiş... Bunlara biraz bakmak gerekiyor..
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-11-18, 07:42:55 (UTC -08:00)