Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

main () - main (void)

Başlatan taytis, 11 Haziran 2005, 15:40:13

taytis

slm ,arkadaşlar programa başlarken main() veya main(void) arasında ne fark vardır ,şimdiden yardımlarınız için teşekkürler

psiko

bildiğim kadarıyla hiçbir farkı yok...

SpeedyX

Hepsi aynı,
void main()
void main(void)
main()
main(void)


void main(void); bu derleme sırasında hız kazandırır sadece, ve anlaşılırlığıda yüksektir belki bazı programcılar için.

taytis


sgokhan1

Windows ve benzeri bir ortam için C ile kod yazarken "main" fonksiyonu her zaman tamsayı bir değer döndüreceğinden bu int main (void) şeklinde açıkça bildirilir. Ama gömülü yazılım için döndürülecek bir değer olmadığından dönüş tipi "void" olarak yazılır.
"main" ya da benzeri bir fonksiyon argüman almıyorsa "void" kullanmak boş bir argüman listesine göre tercih edilen bir yazım stilidir.

DumrulBey

Merhaba,

C'ye hakim olmadığım için ahkâm kesemiyorum. Ancak yanlış hatırlamıyorsam bir yerde okuduğum kadarıyla parantez içi boş olan tek fonksiyon main () fonksiyonudur. Bunun başına dışarı bilgi gönderip göndermemesine göre void ifadesi kullanılır. Yani içine kullanılması kural ihlali veya gereksiz bir şey olsa gerek.

Konuyu tam öğrenmek için küçük bir araştırma yaptım. Önce "void main()" ve "main(void)" şeklinde iki araştırma yaptım. İlkinde binlerce sonuç çıkmasına rağmen saçma gördüğüm ikincisinde bin aşamayan bir kaç yüzlük sonuç ile karşılaştım. Haa bir de şu siteyi gördüm. Belki konuyu daha iyi açıklıyordur:

http://users.aber.ac.uk/auj/voidmain.shtml

Burada özellikle bu konudan bahsediyor. Fazla bakmadım ama baştan sonra okunaması faydalı olacaktır. Buraya kadar söyledikleri Hi-Tech'e özel bir olaysa bir şey diyemeyeceğim. Ama gereksiz ve yanlış bir kullanım olduğunu düşünüyorum. En iyisi ANSI C'nin RPC'lerine bakmak...

Başarılar...
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)

SpeedyX

Hocam,
Ahkam kesmek ne haddimize.
main dahil diğer fonksiyon/alt programlarda da parantez için boş bırakılabiliyor. yani void kelimesi isteğe bağlı bir ifade.
Aslında işin assemblysine inersek main fonksiyonu diğer tüm request kısmı boş bırakılan fonksiyonlar gibi default olarak int türü bir fonksiyondur.

Burada ne demek istiyor?
int isleap(int  y)
{
   return y % 4 == 0 && y % 100 != 0 || y % 400 == 0;
}

Erkan Gench

sorunun cevabı sgokhan1'in yazdığı gibidir.

main fonksiyonu aslında

int main (int argc , char* argv[])

şeklindedir. Burada int geri dönüş değeri main fonksiyonundan çıkışta işletim sistemine geri döndürülecek değerdir. argc ise fonksiyon çağrılırken verilen argüman sayısı, argv[] ise bu argümanların oluşturduğu listedir. yani programınızın ismi a.exe olsun bu programı

a.exe -b -c -d şeklinde çağırdığınız zaman a.exe'den sonra gelen şeyler bu bahsi geçen argümanlardır.

pic ile program yazarken gelinen veya geri dönülen bir işletim sistemi olmadığına göre bunların hiç birisine gerek yok geri dönüş değerinin void olması yada olmaması ise aslında farklı şeyler olmasına rağmen pic ile uğraşırken pratikte pek bir farkı olmayacaktır.
Zorluklar, zamanında yapmamız gerekip de yapmadığımız kolay şeylerin birikmesiyle oluşur. Henry Ford ----------- Ya Rabbi Filistin'deki ve dünyanın her tarafındaki Müslüman kardeşlerime yardım et.

Erkan Gench

Alıntı yapılan: "SpeedyX"
Burada ne demek istiyor?
int isleap(int  y)
{
   return y % 4 == 0 && y % 100 != 0 || y % 400 == 0;
}

burada yapılan işlem şöyle returnden sonra gelen mantıksal işlemler yapılarak sonuç return ile geri döndürülür.

% operatörü bölme işlemini yapar ve sonuçta bu işlemden kalanı verir. yani y ile 4'ün bölümünden kalan değer 0'a eşit ise VE y ile 100'ün bölümünden kalan değer 0'a eşit değilse VEYA y ile 400'ün bölümü 0'a eşit ise geriye 1 döndürülür diğer durumlarda ise 0 döndürülür. yani kısaca y 4 ile tam bölünebiliyor fakat 100 ile tam bölünemiyorsa yada 400 ile tam bölünebiliyorsa doğru, diğer durumlarda yanlış döndürülür.

fonksiyonun adındanda anlaşılabileceği gibi bu fonksiyon artık yıl bulmakta kullanılıyor.

sanırım aynı iş şöylede yapılabilir.

int isleap(int  y)
{
   return !(y % 4)&& (y % 100)|| !(y % 400);
}
Zorluklar, zamanında yapmamız gerekip de yapmadığımız kolay şeylerin birikmesiyle oluşur. Henry Ford ----------- Ya Rabbi Filistin'deki ve dünyanın her tarafındaki Müslüman kardeşlerime yardım et.

DumrulBey

Alıntı yapılan: "Engin ÜNAL"2) main() C 'nin ana fonksiyonudur herşey burada başlar ve burada biter bu da olmazsa olmaz program buradan çalışmaya başlar ve bunun son satırına gelince biter. void main(void) demek, bu fonksiyon parametre almaz ve geri deger döndürmez demektir. int main(void) ise parametre almaz ama geri deger döndürür void main(int) integer(tamsayı) bir parametre alır ve geri değer döndürmez.
Herhalde başka bir dil ile karıştırmış olacağım. Neyle karıştırdım bilemiyorum ama ana fonksiyonun bir çok kullanım şekli varmış. Yukarıda alıntı yaptığım arkadaşımız http://eunal.8k.com/sor.htm adresinde daha başka şeyler de söylemiş. İlgilenen olursa buyursunlar. Bu vesileyle başka bir şeyi daha öğrendik.

Lafı gelmişken void aynı zamanda bir değişkendir. Yani sınırsız bir değişken ve pointerlar ile kullanılıyor. Bu da yanlışsa hafızama format atacağım. FAT karışmışsa kötü vallahi...:)

Başarılar...
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)