Fonksiyon cagırılması ıkı farklı sekılde misal
fonk(a); // bunu yazarsam sonuc=a+3 eklesın
fonk(a,b) // yazarsam sonuc=a+b*3 olacak gıbı
bu ornekden asagıdakı gıbı yapmaya calıstım lakın confilict redeclarete diye hata veriyor.
Bunu C de yapamıyormuyuz ben mı yanlıs yapıyorum
extern void lcd_string(const char *str);
extern void lcd_string(const char x,const char y ,const char *str);
extern void lcd_go(const char x,const char y);
Overloading deniyordu galiba bu istedigin isleme.
http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Flanguage%2Fref%2Fcplr312.htm
Overload diye gecıyormus sagolasın bunalmıs,csharpda var kullanıyorum ama C de uygulamıyorum.
Aradıgım yerlerde hep C de mumkun olmadıgını soyluyor.Ben ınanamadım arastırıyorum bır ıhtımal dıyerek.
overloading, overriding gibi yöntemler sadece nesne tabanlı derleyicilerde(c#,c++,java gibi) yer alır diye biliyorum; dolayısıyla C'de kullanılamaması normal gibi.
Evet C99 da overload yapilamamaktadir.
Daha dogrusu C derleyicileri bunu desteklemez.
Overload kullanmak icin C++ destekleyen derleyicileri kullanabilirsiniz.
Mesela IAR hem C hem de C++ ile kod yazma imkani sunmaktadir.
Bir takla ile yaparım dedim ama başladıgım yere dondum baska fonk olusrurarak devam edıyorum.
Tesekkur ederım hepinize
CCS C derleyicisi olmasına rağmen function overloading desteği var.
http://www.ccsinfo.com/content.php?page=functionovr
Alıntı yapılan: controller - 27 Ocak 2011, 09:18:37
CCS C derleyicisi olmasına rağmen function overloading desteği var.
http://www.ccsinfo.com/content.php?page=functionovr
CCS hangi C standartına uyuyorki buna uysun. Yapan adamlar çok esnek davranıyorlar. CCS kullanan biri için bu avantaj sağlıyor ama başka bir c derleyicisine kodu taşıyormıyorsunuz. Taşınabilirlik elinizden gidiyior.
C de ancak iki farklı isinde fonksiyon yazarak olur.
int fonk1(int a)
{
return a+3;
}
int fonk2(int a,int b)
{
return a+b*3;
}
Taşınabilirlik çok mühim bir durum degil. Önemli olan yazılımcının bilgi seviyesidir.
C de uzunluğu değişebilen argümana sahip fonksiyon yapıları var belki işinizi görür. Bu sayede kaç argüman geldiyse ona göre işlem yaptırılabilir diye düşünüyorum.
örnek tanımlama :
double ortalama(int,...)
@abdullah dedıgın gıbı yaptım hersey bir arkadasın lcd_stringyaz(0,0,"BC237");
gibi bir fonksıyonu gorunce lcd ye yazı yazarken konumda belırmek akıllıca geldı o sebeple yapmaya calıstım
@controller Hitech C kullanıyorum CCS bu ozellıgı guzelmıs
@muzoo dedıgı gıbı arguman sayısı ıle yapayım dıye ugrastım sonra amacın dısına cıktım dıye ıkı ayrı fonksıyon yazdım zira kac gundur C de kullanılan fonksiyonları dusunuyorum belkı overload kullanılmıs bır fonks vardır dıye ama bulamayınca kabul ettım ıkı ayrı fonk yazmayı
Tesekkur ederım
Alıntı yapılan: gerbay - 27 Ocak 2011, 21:37:53
C, C++ ın alt kümesidir.
Yanlış bir tanımlama. Bu konuda söylenebilecek birşey varsa oda C++'ın C'nin üst kümesi olduğudur.
http://public.research.att.com/~bs/bs_faq.html#C-is-subset
Konu aslında C/C++ değil. Ama hazır konu açılmışken fikrimi söylemeden gemeyeyim istedim.
Gömülü sistemlerde C ile yapısal programlama tekniği kullanıyordum. Bir kaç ay önce C++ ile OOP tekniği kullanmaya başladım. Object Oriented programlamanın avantajları müthiş.
Yapı(struct) yerine sınıf(class) kullanmak , programı inanılmaz esnekleştiriyor. Halen C++ nın tüm fonksiyonlarını kullanmıyorum. COUT yerine halen PRINTF kullanıyorum. Ama , sadece nesneleri kullanmaya başlamak bile embedded programlama anlayışımı değiştirdi.
Çokfazla Low-Level fonksiyon kullanmayan , hız ve bellek tasarrufu ,yerine esneklik arayanlara öneririm.
Biraz daha ustalaştıtan sonra , başka bir başlıkta; gömülü sistemler için Object Oriented programlama konusunda tecrübelerimi aktaracağım.
@gerbay Kaan Aslan ile C ogrendim mcu ile alakam yok idi simdi Hi-tech kullanıyorum bu sorunla karsılasınca daha ıyı oldugumu sandıgım C ye dondum cevabı orada aradım.dedigin gibi uzantıyı cpp yazarsam hitech sanırım destek vermez.
@controller C, C++ nin alt kumesi degil demiş C alt kume olacak basitlikde olmadıgı C nin saygın ozgun yazılım oldugu ıcın duyulan saygıdan ( ki bende katılıyorum) sanırım.
Verdiginiz bilgiler icin tesekkur ederim
http://tr.wikipedia.org/wiki/Alt_K%C3%BCme
Bu alt kümenin tanımı.
Bu tanıma bakarsak C, C++ nın alt kümesidir. Olaya duygusal yaklaşmanın anlamı yok. C++ , C yi kapsar. üzerine eklemeler yapılmıştır. C nin alt küme olması , onun basit bir dil olduğu anlamına gelmez. Birinin diğerinden iyi yada kötü olması , alt küme , üst küme ilişkisini belirlemez. Bence C nin C++'nın alt kümei olduğuna itraz etmenin de pek anlamı yok. Bu C nin değerini düşürmez.
Alıntı yapılan: controller - 27 Ocak 2011, 22:09:54
Alıntı yapılan: gerbay - 27 Ocak 2011, 21:37:53
C, C++ ın alt kümesidir.
Yanlış bir tanımlama. Bu konuda söylenebilecek birşey varsa oda C++'ın C'nin üst kümesi olduğudur.
http://public.research.att.com/~bs/bs_faq.html#C-is-subset
+1
C ve C++ arasındaki ilişki bizzat Bjarne Stroustrup tarafından açıklanmış. Fazla söze gerek yok.
Gömülü sistemlerde C++ bilinçli kullanıldığında ister 8 bit mikroişlemci isterse de 32 bit mikroişlemci olsun getirisi elbette büyük olacaktır. Fakat
STL, RTTI, Templates ve
Exceptions kullanımı derleyiciye de bağlı olarak yavaş ve verimsiz kod üretimine neden olmaktadır.
Benim yazdığım mesajın duygusallıkla alakası yok. Duygusallığı @eseneren kattı.
Birşeyin altküme olabilmesi için daha önce var olan bir üstküme gerekir. C, C++ dan daha önce tasarlandığına göre C++ piyasada yok iken C olmayan birşeyin altkümesi değildi.
Ancak daha önce var olan birşeyin üzerine eklemeler yaparak onun üstkümesi oluşturulabilir.
C C++ ın altkümesidir demek ile C++ C nin üstkümesidir demek arasındaki ince çizgiyi anlamak çok zor değil.
Bu ince çizgiyi C++ ın tasarımcısı olan Bjarne Stroustrup çok güzel anlatmış.
Alıntı yapılan: gerbay - 28 Ocak 2011, 20:44:05
Zaten konu "Visual C++" başlığı altında.
C diye bir başlık olmadığından en yakın olduğunu sandığım için buraya açtım alt yada üst kümesi farkındalığında değil idim.