void abcdef(void) ile void abcdef() arasındaki fark

Başlatan mechanicalengine, 07 Mayıs 2014, 20:40:52

mechanicalengine

Arkadaşlar;

void abcdef(void)
                           ile         
                             void abcdef() komutlarının arasındaki farkı açıklayabilir misiniz?

Tagli

#1
CCS C bilmiyorum ama normalde C'de doğrusu argüman olan (yani aslında olmayan) void'i yazmak. Böylece fonksiyona net bir şekilde "sen argüman almıyorsun" diyoruz. Boş bırakılmasının daha farklı bir etkisi vardı ama hatırlamıyorum, internetten araştırılabilir.

C++'da ikisi arasında fark yok. Hal böyle iken insanlar doğal olarak boş bırakmayı alışkanlık haline getirmişler.

Özetle, C kullandığın için, fonksiyon tanımlamalarında ve prototiplerinde void'i yaz.
Gökçe Tağlıoğlu

sadogan

Hic bir fark yok
void adcd()  şeklinde yazınca CCS parentez içini void olarak kabul ediyor.

z

void func() ile

void func(void) arasinda dehset fark var.

Eger void func() tipinde bir fonksiyonu, func(1,2..) gibi parametre koyup cagirirsaniz derleyici sizi uyarir ama derleme yapar. Ustelik parametreler fonksiyona ulastirilir da.

Fakat void func(void) tanimli fonksiyonu ornegin func(1) gibi cagirmaya kalkarsaniz dogrudan hata alirsiniz ve kodlariniz derlenmez.

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

baran123

arada fark yoktur void topla() parantez içine döndereceği değer yazılır hiç bir şey yazmassan void olarak kabul eder void topla(void) hiç bir şey döndermeyeceği anlamındadır .

strom

@z hocam hangi derleyiciyi kullanıyorsunuz acaba?

Keil'de cpp ile deneme() fonksiyonunu deneme(1,2,3) şeklinde çağırdım ama hata verdi. Sizin dediğiniz şekilde çağırıyı kabul edebilmesi için Ellipsis(...) kullanılmıyor mu? Belkide eski derleyicilerde durum sizin dediğiniz gibidir.

mehmet

Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

Tagli

Alıntı yapılan: strom - 07 Mayıs 2014, 21:40:19
Keil'de cpp ile deneme() fonksiyonunu deneme(1,2,3) şeklinde çağırdım ama hata verdi.
Yukarıda dediğim gibi, C++'ta deneme() demek aslında deneme(void) demektir. Arada fark yok. Fark C'de. Ama bu fark belki CCS C'de yoktur, onu bilemem. Ama C'de kod yazan bir insan elini void yazmaya alıştırmalı. C++'ta ise genel kod tarzına uyum göstermek için usul gereği void yazılmaz.
Gökçe Tağlıoğlu

z

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

Tesla.25

Fark var.
Programın çalışması açısından ve kaynak kodun ifade ettiğinde bir fark yok ama siz bunu bir de derleyiciye sorun. Derleyici açısından fark var diye biliyorum. void kullanıldığı zaman biraz daha hızlı işlem yapıyor sanıyorum.

Ramiz

Sözlükte void in bir çok anlamını bulabilirsiniz ama genel kullanımı "boşluk" demektir. 

Sanırım,

abcd(void)
{

}


Diyerek bu fonksiyonun parametre alamayacağını, parametre kısmının "boş olacağını" derleyiciye belirtiyoruz. Peki void yazmayıp, boş bırakınca abcd() yazınca derleyici bunun "boşluk" olduğunu anlamıyor mu?


Bence günümüz derleyicileri bunu anlıyor ve arada pekte fark gözetmiyordur..
Electrical & Electronics Engineering -> Step one

ERdow

Zamanında
parantezin içi boş olunca sadece deklarasyondur
parantezin içi herhangi bir şeyle "(void) dahil" dolduğunda prototiptir diye öğrettiler. Bekli compiler için işler değişiyordur ama benim bildiğim - karşılaştığım bir fark olmadı.

sorunuzu görünce merak edip baktım, şu stackoverflow linklerinde daha farklı şeylerden de bahsederek anlatmışlar.(örneğin C için boş parantezin sınırsız argüman olabilmesi gibi)
link1
link2