C de farklı sekılde fonksıyon cagırılması

Başlatan eseneren, 26 Ocak 2011, 23:39:32

eseneren

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);
Seçim yapmak için durum hakkında bilgi sahibi olmak zorunda değilsin, sonucuna hazır olmak için durum hakkında kaygılanırsın.  http://bit.ly/gixfTk

z

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

eseneren

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.
Seçim yapmak için durum hakkında bilgi sahibi olmak zorunda değilsin, sonucuna hazır olmak için durum hakkında kaygılanırsın.  http://bit.ly/gixfTk

RcALTIN

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.
KİMSEYİ ENGELLEDİĞİM YOK, ÖZEL İLETİ DEVRE DIŞI !

fatihinanc

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.
Kainat dediğimiz kitap, yazıldığı dil ve harfler öğrenilmedikçe anlaşılamaz.  (Galileo Galilei)

eseneren

Bir takla ile yaparım dedim ama başladıgım yere dondum baska fonk olusrurarak devam edıyorum.
Tesekkur ederım hepinize
Seçim yapmak için durum hakkında bilgi sahibi olmak zorunda değilsin, sonucuna hazır olmak için durum hakkında kaygılanırsın.  http://bit.ly/gixfTk

controller

Hesabım OG tarafından haksız bir şekilde pasif yapılmıştır.

sigmoid

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;
}



fatihkuzucu

Taşınabilirlik çok mühim bir durum degil. Önemli olan yazılımcının bilgi seviyesidir.
Exp.Kits http://tinyurl.com/3qhs8pm   Küçük adamların, küçük fikirleri... Büyük adamların, büyük hayalleri...

muuzoo

#9
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,...)
gunluk.muuzoo.gen.tr - Kişisel karalamalarım...

eseneren

@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

Seçim yapmak için durum hakkında bilgi sahibi olmak zorunda değilsin, sonucuna hazır olmak için durum hakkında kaygılanırsın.  http://bit.ly/gixfTk

controller

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
Hesabım OG tarafından haksız bir şekilde pasif yapılmıştır.

Klein

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.

eseneren

@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
Seçim yapmak için durum hakkında bilgi sahibi olmak zorunda değilsin, sonucuna hazır olmak için durum hakkında kaygılanırsın.  http://bit.ly/gixfTk

Klein

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.