[linux-programlama] Re: merhaba .. ilk mailim .

---------

From: Serdar KÖYLÜ (serdarkoylu@fisek.com.tr)
Date: Tue 02 Mar 2004 - 06:50:09 EST

  • Next message: Yüksel ÖZCAN: "[linux-programlama] Re: merhaba .. ilk mailim ."

    Selamlar..

    Ilginc bir konu. C gibi dillerde disiplin son derece onemlidir. Siz
    fonksiyonun basina void yazmakla, o fonksiyonun deger dondurmesi
    gerekmedigini derleyiciye bildirirsiniz. Asil konu buradadir. Bir void
    fonksiyon deger dondurmedigi gibi sonlanmak zorunda da degildir.
    Derleyici bilhassa optimizasyonlar vs. icin bu bilgiyi kullanabilir. Ama
    aslen derleyici sizin geriye deger dondurmek istemediginizden emin olur.

    Uzerinde durulmayan bir diger hususta, "Keep compiler be happy" gibi bir
    kaide vardi, o mevzudur. Valued fonksiyonlarda, deger donduren tum
    fonksiyonlarin "return val;" seklinde sona ermesi gerekirken void
    fonksiyonlar return ile sonlanmayabilir. Hatta, bazi durumlarda
    fonksiyon asla sonlanmayabilir. Asenkron fonksiyonlari dusunun, fork
    gibi ilginc fonksiyonlari dusunun. fork, sonlaninca iki process'e birden
    deger dondurur. Bunun gibi enteresan durumlar her zaman mevcuttur.
    longjmp mevzusu gibi durumlar vs. vs.

    Kisaca, void, aslen derleyiciye bu fonksiyon deger dondurmeyecek
    demektir. Bu da,

    1. return komutu kullanmayabilirim (kodun sonu=return).
    2. Bu fonksiyon asla sonlanmayabilir (asla return koduna
    ulasamayabilirsin).
    3. Geriye hic bir zaman deger dondurulmeyecek, hata yaparsam beni uyar..

    Gibi temel anlamlar tasir. Velakin, mesela, gcc 2.95.2 soyle bir kodu
    kabul ediyordu:

    void a(void) {
    . return 1;
    }

    Bu bug kisa zamanda duzeltildi. cunku type casting gibi mekanizmalarin
    duzgun isleyebilmesi icin derleyicinin veri tiplerini iyi tanimasi
    elzemdir.

    Saygi ve sevgiler..

    > Merhabalar arkadaşlar
    >
    > Void konusunda yanılmıyorsam hatırladığım bir iki eklemeyi yapmak yerinde
    > olur. fonksiyonlara pointer tanımlaması yaparak kullanımlarını daha basit
    > hale getirebilirsiniz.Çoğu zaman programlarımızda header veya include
    > deyimlerini kullanarak ulaştığımız fonksiyon tanımlama kısımlarında tip
    > tanımlama alanlarında void türde fonksiyonların tanımlandığını görürüz.İşte
    > bu noktada parametreleri ne olursa olsun herhangibir fonksiyonun o
    > fonksiyona giriş paremetreleri doğru girildiğinde çağrılacabileceğini
    > göstermektedir.Yani bir fonksiyon içinde çağrılan bir diğer fonksiyona
    > adresi ile ulaşabilirsiniz anlamına geliyor.Ve bu tanım kısmında fonksiyonu
    > void * function bildirimi ile tanımlarsınız , tabii diğer fonksiyon
    > içinden.Böylece örneğin adresini elde edebildiğiniz herhangibir
    > karşılaştırma fonksiyonunu bu ister integer olsun isterse char olsun (veya
    > string) sonucu uygun formatta ekrana basacak şekilde asıl fonksiyonunuzdan
    > bahsedilen yardımcı fonksiyonu kullanarak ulaşabilirsiniz anlamına
    > geliyor.Uzun zamandır bu tür fonksiyonları kullanmadığımdandolayı birkaç
    > ayrıntıyı unutmuş olabilirim
    >
    > Kusuruma bakmayın artık
    >
    >
    > -----Original Message-----
    > From: linux-programlama-bounce@liste.linux.org.tr
    > [mailto:linux-programlama-bounce@liste.linux.org.tr]On Behalf Of serdar
    > Sent: Tuesday, March 02, 2004 9:54 AM
    > To: linux-programlama@liste.linux.org.tr
    > Subject: [linux-programlama] Re: merhaba .. ilk mailim .
    >
    >
    > Isinize yararsa bildiklerimi anlatayim.=20
    > i) C programlama dili ile sorun yasamak istemiyorsaniz pointer kavramini
    > tam anlamiyla cozmek gerekiyor. Buda benin gorebilgigim zamanla oluyor.
    >
    > ii) Void benimde C'ye basladigim zamanlarda kafami karistirmisti. Bir
    > fonksiyonun protatip'ine void yazilmasiyla yazilmamasi arasinda ne fark
    > olabilir?
    > void fonk(...) protatipi fonk fonksiyonunun geriye birsey
    > donduremeyecegini anlatir.
    > fonk(...) seklinde bir protatip tanimlarsaniz derleyici otamatik olarak
    > bu fonksiyonun geri donus degerini "int" kabul eder.=20
    > Eger geri donus degerine ihtiyac yoksa bir fonksiyonu void fonk(...)
    > seklinde tanimlamak mem. acisindan daha tasarufludur.
    >
    > iii) main() fonksiyonu c programinda ilk calisacak fonksiyondur. Main
    > fonksiyonu bitmesi programinda sonlanmasi anlamina gelir. Diger
    > fonksiyonlar main icerisinde kullanilir ve main sonlanmadan once hepsi
    > sonlanmasi gerekir. (Sonlandiklarinda donulecek yer yine main'dir.)=20
    >
    > Main fonksiyonunu ;
    > void main(void) seklinde tanimlamak mainin(programin) giris argumaninin
    > ve geri donus degerinin olmayacagi anlamina gelir.=20
    > int main(int argc, char *argv[]) seklindeki bir main tanimlamasi
    > main'in(programin) giris argumanlari olabilecegini ve geri donus
    > degerinin int oldugu anlamina gelir.
    >
    >
    > Saygilarimla ...
    > =20
    >
    >
    > -----Original Message-----
    > From: linux-programlama-bounce@liste.linux.org.tr
    > [mailto:linux-programlama-bounce@liste.linux.org.tr] On Behalf Of cambaz
    > samet
    > Sent: Monday, March 01, 2004 7:40 PM
    > To: linux-programlama@liste.linux.org.tr
    > Subject: [linux-programlama] merhaba .. ilk mailim .
    >
    > =FEimdi benim sorum C programlama dili ile ilgili
    > olucak..=20
    >
    > =FEu void() fonksiyonunu anla=FE=FDlcak =FEekilde hi=E7biryerde
    > dinleyemedim.. hi=E7bir=FEey geriye bilgi
    > dondurulmeyecek anlam=FDna geliyormu=FE.. eh tamamda nas=FDl
    > yani void() geriye bilgi gondermiyecekse neden
    > kullan=FDls=FDnki ?
    >
    > di=F0er bir soruda...
    >
    > main() program=FDn baslad=FD=F0=FD ve genellikle son buldu=F0u
    > bir fonksiyondur? nas=FDl yani ...... art=FD
    >
    > void(main) ne anlama geliyor o zaman program
    > baslam=FDyacak anlam=FDna gelmezmi..
    >
    > ya da main(void) <bu ile >void(main) aras=FDndaki fark
    > nedir...
    >
    > ah su void() fonksiyonu.....
    >
    > basta serdar koylu olmak uzere ki(ciddiyim serdar
    > koyluye hayran=FDm onun kadar kolay bir programlama
    > o=F0reten gormedim hatta bir yerde programlama sorusunla
    > kars=FDlast=FDm=FD an=FDnda cevaplar ama super cevaplar:)
    >
    > sevgi ve sayg=FD..


  • Next message: Yüksel ÖZCAN: "[linux-programlama] Re: merhaba .. ilk mailim ."

    ---------

    Bu arsiv hypermail 2.1.6 tarafindan uretilmistir.