sizeof değerinin derleyici hata mesajından alınması

Bir nedenden dolayı (bu neden ne olabilir o da ayrı bir soru) bir türe ilişkin sizeof değerini derleyicinin bize vereceği bir hata mesajından öğrenmek istiyoruz. Ne yapabiliriz?
Bunun için kullanabileceğimiz çok sayıda hile olabilir. Benim aklıma gelen hileler şöyle :

İsmi Mysizeof, şablon sabit parametresi (template non type parameter) olarak da int türünü (ya da size_t türünü) kullanan bir sınıf şablonunun bildirimini yaptık. Henüz bu sınıfın bir tanımı yok. Bu yalnızca bir bildirim. Bu sınıf türünden bir nesne tanımlamak sözdizim hatası değil mi? T bir tür bilgisi olmak üzere bu şablonun sizeof(T) açılımından bir nesne oluşturmak istediğimizde derleyici sınıfın tanımını görmediği için bize bir sözdizim hatası verecek. Derleyici büyük olasılıkla (bu konuda şüphesiz bir garanti yok) vereceği hata mesajında şablon sabit parametresi olan n değerinin kaç olduğunu yazacak. Örneğin yukarıdaki kod için benim derleyicimin verdiği hata mesajı şöyle:
Şimdi de şu şablona bakalım:
İsmi mysizeof olan bir işlev şablonu tanımladık. Bu şablonun hangi tür için açılacağını kendimiz belirtebiliyoruz değil mi? Bu durumda derleyici işlev şablonu içinde oluşturacağı switch deyiminde aynı tamsayı değerine ilişkin iki case ifadesi görecek ve durumu sentaks hatası olarak belirleyecek. Derleyici muhtemelen vereceği hata mesajında yinelenen case sabit ifadesi değerini bize bildirecek. Yukarıdaki kod için benim derleyicimin verdiği hata mesajı şöyle:
son olarak bir de şu hileye göz atalım:
Yine ismi mysizeof olan bir işlev şablonu oluşturduk. İşlevimiz içinde T şablonun tür parametresi olmak üzere boyutu sizeof(T) olan a isimli bir char dizi tanımladık. sizeof(T) değeri bir sabit ifadesi olduğundan dilin kuralları henüz çiğnenmiyor. Şablon içinde ismi foo olan bir işleve ilişkin yerel bir bildirim yaptık. Bildirdiğimiz işlevin parametresi int türden. Bu işleve bir dizi geçmek sözdizim hatasıdır değil mi? Bildirilen foo işlevini olusturduğumuz a dizisinin ismiyle çağırdık. Derleyici muhtemelen bize vereceği hata mesajında a ifadesinin türünden int türüne dönüşümün dilin kurallarını çiğnediğini bildirecek. Benim derleyicimin verdiği hata mesajı şöyle:
Peki şimdi de aşağıdaki kodun derlenmesi sırasında neler olur, tahmin edebilir misiniz?

Necati Ergin

C ve Sistem Programcıları Derneğinde eğitmen olarak çalışıyor.

Bunlar da ilginizi çekebilir

sizeof değerinin derleyici hata mesajından alınması” için bir yorum

  1. Başka bir fikir de şu olabilir:

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Kod Eklemek İçin Okuyun