Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => C/C++ => Konuyu başlatan: eseneren - 26 Ocak 2011, 23:39:32

Başlık: C de farklı sekılde fonksıyon cagırılması
Gönderen: eseneren - 26 Ocak 2011, 23:39:32
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);
Başlık: Ynt: C de farklı sekılde fonksıyon cagırılması
Gönderen: z - 26 Ocak 2011, 23:54:22
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
Başlık: Ynt: C de farklı sekılde fonksıyon cagırılması
Gönderen: eseneren - 27 Ocak 2011, 01:12:02
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.
Başlık: Ynt: C de farklı sekılde fonksıyon cagırılması
Gönderen: RcALTIN - 27 Ocak 2011, 01:49:05
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.
Başlık: Ynt: C de farklı sekılde fonksıyon cagırılması
Gönderen: fatihinanc - 27 Ocak 2011, 02:42:15
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.
Başlık: Ynt: C de farklı sekılde fonksıyon cagırılması
Gönderen: eseneren - 27 Ocak 2011, 03:26:39
Bir takla ile yaparım dedim ama başladıgım yere dondum baska fonk olusrurarak devam edıyorum.
Tesekkur ederım hepinize
Başlık: Ynt: C de farklı sekılde fonksıyon cagırılması
Gönderen: 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
Başlık: Ynt: C de farklı sekılde fonksıyon cagırılması
Gönderen: sigmoid - 27 Ocak 2011, 13:28:23
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;
}


Başlık: Ynt: C de farklı sekılde fonksıyon cagırılması
Gönderen: fatihkuzucu - 27 Ocak 2011, 13:38:47
Taşınabilirlik çok mühim bir durum degil. Önemli olan yazılımcının bilgi seviyesidir.
Başlık: Ynt: C de farklı sekılde fonksıyon cagırılması
Gönderen: muuzoo - 27 Ocak 2011, 13:39:53
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,...)
Başlık: Ynt: C de farklı sekılde fonksıyon cagırılması
Gönderen: eseneren - 27 Ocak 2011, 17:04:28
@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

Başlık: Ynt: C de farklı sekılde fonksıyon cagırılması
Gönderen: 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
Başlık: Ynt: C de farklı sekılde fonksıyon cagırılması
Gönderen: Klein - 28 Ocak 2011, 00:00:50
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.
Başlık: Ynt: C de farklı sekılde fonksıyon cagırılması
Gönderen: eseneren - 28 Ocak 2011, 01:20:47
@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
Başlık: Ynt: C de farklı sekılde fonksıyon cagırılması
Gönderen: Klein - 28 Ocak 2011, 17:28:57
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. 
Başlık: Ynt: C de farklı sekılde fonksıyon cagırılması
Gönderen: tmcone - 28 Ocak 2011, 18:51:22
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.
Başlık: Ynt: C de farklı sekılde fonksıyon cagırılması
Gönderen: controller - 28 Ocak 2011, 20:33:28
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ış.

Başlık: Ynt: C de farklı sekılde fonksıyon cagırılması
Gönderen: eseneren - 28 Ocak 2011, 21:04:14
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.