Tam Sürümünü Görmek İçin : bi soru daha benden..
progra blogu asagıda
---------------
main()
{
basla();
}
basla(){
}
-------------
bu program blogu tc.exe ile aynı dizinde ise çalışmıyor dosyanın yerini değiştirirsem derleyebiliyorum sorun nedir(Prototype hatası veriyor);aynı kod niye yeri değiştirilince çalışır ki? kod da bi değişiklik yapmıyorum.saygılarımla.
acehreli
14/02/2003, 19:54
[C ile derlediğinizi varsayacağım.]
Programlar kod baştan sona doğru okunarak derlenirler. Benim bildiğim üç temel C türü bu durumda bazı değişiklikler gösterirler:
- 1989'daki ilk C standardından önceki C (eski C)
- standart C (C89)
- 1999'daki yeni standarttan sonraki C (C99)
Eğer eski C kurallarını uygulayan bir derleyici kullanıyorsanız, programınızda bir yanlışlık yok: Derleyici, 'basla'yı gördüğü anda ne olduğunu bilmediği zaman onun 'int' döndüren ve herhangi türde herhangi sayıda parametre alan bir işlev olduğunu varsayar.
C89 kullanıyorsanız, 'main'in dönüş türünün 'int' olduğunu belirtmeniz gerekiyor. (Bu durumda main'in sonuna bir return satırı koymanızın gerekip gerekmediği konusundan emin değilim. gcc istediği için öyle yapacagım.) Ayrıca, 'basla'nın ne olduğunun ilk kullanıldığı yerden önce bildirilmesi gerekir.
Yani ya böyle:
/* Bildirim ve tanım */
void basla()
{}
int main()
{
basla();
return 0;
}
ya da böyle:
/* bildirim */
void basla();
int main()
{
basla();
return 0;
}
/* tanım */
void basla()
{}
Eğer C99 derleyicisi kullanıyorsanız, bu durumda görebildiğim bir fark var: 'return 0' satırını yazmak zorunda değilsiniz. Örneğin:
void basla()
{}
int main()
{
basla();
}
Bu durumda kütüğünüzün değişik yerlerde değişik kurallarla derlendiğini anlıyorum. Belki tc.exe'nin bulunduğu yerdeki onunla ilgili bir kütük derleme kurallarını etkiliyordur; veya başka yerde olduğunuzda tc'nin bilgisayarınızda bulunan eski bir sürümü devreye giriyordur.
Her iki yerde de tc'yi kendi sürümünü bildirecek şekilde çalıştırmayı deneyin. Hiç tc bilmiyorum ama belki 'tc -v' işe yarar. Veya 'tc -version'?
Ali
Forum Yazılımı : vBulletin v3.6.8, Copyright ©2000-2008, Jelsoft Enterprises Ltd.