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_parametreleri.return,%20parametre
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:
Ek bilgi olarak, bütün DIPler şurada:
Ali
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]