Derleyicilerin Hata Mesajları

Derleyicilerin Hata Mesajları , CSD (C ve Sistem Programcıları Derneği , csystem.org , Eğitmen : Kaan Aslan)

Derleyicilerin hata mesajları üçe ayrılmaktadır:

Uyarılar (Warnings): Uyarılar gerçek hatalar değildir. Program içerisindeki program yapmış olabileceği olası mantık hatalarına dikkati çekmek için verilirler. Uyarılar derleme işleminin başarısızlığına yol açmazlar. Ancak programcıların uyarılara çok dikkat etmesi gerekir. Çünkü pek çok uyarıda derleyici haklı bir yere dikkat çekmektedir.

Gerçek Hatalar (Errors): Bunlar dilin sentaks ve semantik kurallarına uyulmaması yüzünden verilirler. Bunların mutlaka düzeltilmesi gerekir. Bir programda bir tane bile “error” olsa program başarılı olarak derlenemez.

Ölümcül Hatalar (Fatal Errors): Derleme işleminin bile devam etmesini engelleyen ciddi hatalardır. Normal olarak bir programda ne kadar hata olursa olsun tüm kod gözden geçirilir. Tüm hatalar en sonunda listelenir. Fakat bir ölümcül hata oluştuğunda artık derleme işlemi sonlandırılır. Ölümcül hatalar genellikle sistemdeki ciddi sorunlar yüzünden ortaya çıkmaktadır (örneğin diskte yeterli alan olmayabilir, ya da sistemde yeterli RAM bulunmuyor olabilir.)

Verilen hata mesajlarının metinleri derleyiciden derleyiciye değişebilir. Ayrıca bir hata durumunda bir derleyici buna bir mesaj verirken diğeri daha fazla mesaj verebilir.

C’nin Veri Türleri

C’nin Veri Türleri , CSD (C ve Sistem Programcıları Derneği , csystem.org , Eğitmen : Kaan Aslan)

Tür (type) bir nesnenin bellekte kaç byte yer kaplayacağını ve onun içerisindeki 0’ların ve 1’lerin nasıl yorumlanacağını anlatan temel bir kavramdır. Her nesnenin C’de bir türü vardır. Ve bu tür programın çalışması sırasında değişmez. (Aslında yalnızca nesnelerin değil genel olarak her ifadenin bir türü vardır. Bundan ileride bahsedilecektir.)

C’nin temel türleri aşağıdaki tabloda gösterimi :

– int türü işaretli bir tamsayı türüdür. int türünün uzunluğu sistemden sisteme değişebilir. Standartlarda en az 2 byte olması zorunlu tutulmuştur. Ancak derleyicileri yazanların isteğine bırakılmıştır.

– C’de her tamsayı türünün işaretli ve işaretsiz versiyonları vardır. int türünün işaretsiz biçimi unsigned int türüdür. Yalnızca unsigned demekle unsigned int demek aynı anlamdadır.

– Standartlara göre short türü ya int türü kadardır ya da int türünden küçüktür. Örneğin DOS’ta int türü de short türü de 2 byte uzunluktadır. Oysa Windows’ta ve UNIX/Linux sistemlerinde int türü 4 byte, short türü 2 byte uzunluktadır.

– short türünün işaretsiz biçimi unsigned short türüdür.

– long türü standartlara göre ya int türü kadar olmak zorundadır ya da ondan büyük olmak zorundadır. 32 ve 64 bit Windows sistemlerinde long türü int türü aynı uzunluktadır (4 byte). 32 bit UNIX/Linux sistemlerinde long türü 4 byte, 64 bit UNIX/Linux sistemlerinde 8 byte’tır.

– long türünün işaretsiz biçimi unsigned long türüdür.

– char türü standartlara göre her sistemde 1 byte olmak zorundadır. (Bu türün ismi belki byte olsaydı daha iyiydi). char ismi her ne kadar karakteri çağrıştırıyorsa da bunun karakterle bir ilgisi yoktur. char türü C’de 1 byte uzunlukta bir tamsayı türüdür. C’de yalnızca char denildiğinde bunun signed char mı, yoksa unsigned char mı olacağı derleyicileri yazanların isteğine bırakılmıştır. Örneğin Windows ve UNIX/Linux sistemlerindeki derleyicilerde char denildiğinde signed char anlaşılmaktadır (fakat bu durum ayarlardan da değiştirilebilmektdir).

– C’de gerçek sayı türlerinin işaretli ve işaretsiz biçimleri yoktur. Onlar zaten her zaman default işaretlidir.

– float türü en az 4 byte olması öngörülen bir gerçek sayı (noktalı sayı) türüdür. float türünün yuvarlama hatalarına direnci zayıftır. Bu nedenle float yerine programcılar daha çok double türünü tercih ederler.

– double türü standartlara göre en az float kadar olmak zorundadır. Yani float türüyle aynı duyarlıkta olabilir ya da ondan daha geniş olabilir.

– long double türü en az double kadar olmak zorundadır. double ile aynı uzunlukta olabilir ya da ondan daha uzun olabilir.

– Birden fazla sözcükten oluşan türler için bu sözcüklerin yerleri değiştirilebilir (örneğin signed long int yerine int signed long denilebilir.)

– C’de en fazla kullanılan tamsayı türü int, en fazla kullanılan gerçek sayı türü double türüdür. Programcının öncelikle bunları tercih etmelidir. Özel durum varsa diğerlerini düşünmelidir.

– C99’da long long isimli bir tamsayı türü daha eklendi. Bu türün long türünden daha uzun olması öngörülmüştür. Standartlara göre bu tür ya long türüyle aynı uzunluktadır ya da ondan daha uzundur.

– C’ye C99’la birlikte nihayet bir bool türü de eklenmiştir. Fakat klasik C’de böyle bir tür yoktur.