mainFonksiyon genel ad üye olmayan bir fonksiyonu olarak beyan edilmelidir. Bu, bir sınıfın statik veya statik olmayan üye işlevi olamayacağı veya bir ad alanına (hatta adsız ad alanına) yerleştirilemeyeceği anlamına gelir.
Ad main, genel ad alanındaki bir işlev dışında C ++ 'da rezerve edilmez. mainDiğer şeylerin yanı sıra, sınıflar, değişkenler, numaralandırmalar, üye işlevler ve genel ad alanında olmayan üye olmayan işlevler dahil olmak üzere adlandırılmış diğer varlıkları bildirmekte özgürsünüz .
mainÜye işlev olarak veya bir ad alanında adlandırılmış bir işlevi bildirebilirsiniz , ancak böyle bir işlev main, programın nerede başladığını belirleyen işlev olmayacaktır .
mainFonksiyonu olarak ilan edilemez staticveya inline. Ayrıca aşırı yüklenemez; maingenel isim alanında isimlendirilmiş yalnızca bir işlev olabilir .
mainAramak izin verilmez: işlevi programda kullanılamaz mainKodunuzdaki herhangi bir yerden işlevi ne de adresini almaya izin verilir.
Dönüş türü mainolmalıdırint . Başka hiçbir dönüş türüne izin verilmez (bu kural kalın yazılmıştır çünkü mainbir dönüş türü ile bildiren yanlış programları görmek çok yaygındır void; bu muhtemelen mainişlevle ilgili en sık ihlal edilen kuraldır ).
mainİzin verilmesi gereken iki bildirim vardır :
int main()
int main(int, char*[])
In (1) , hiçbir parametreler vardır.
In (2) , iki parametre vardır ve bunlar geleneksel olarak adlandırılır argcve argvsırasıyla. argvprogramın argümanlarını temsil eden bir C dizgisi dizisine göstericidir. dizideki argcbağımsız değişkenlerin sayısıdır argv.
Genellikle argv[0]programın adını içerir, ancak bu her zaman böyle değildir. argv[argc]boş gösterici olduğu garantilidir.
Bir dizi türü bağımsız değişkeni (gibi char*[]) gerçekten gizlenmiş bir işaretçi türü bağımsız değişkeni olduğundan, aşağıdaki ikisinin her ikisi de yazmak için geçerli yöntemler (2) olduğunu ve her ikisinin de tamamen aynı anlama geldiğini unutmayın:
int main(int argc, char* argv[])
int main(int argc, char** argv)
Bazı uygulamalar başka tür ve sayıda parametreye izin verebilir; Neyi desteklediğini görmek için uygulamanızın belgelerini kontrol etmeniz gerekir.
main()başarıyı göstermek için sıfır ve başarısızlığı belirtmek için sıfırdan farklı bir değer döndürmesi beklenir. Açıkça bir returnifade yazmanız gerekmez: açık bir ifade olmadan geri dönmeye main()izin verirseniz , yazmışsınız gibi aynıdır . Aşağıdaki iki işlev aynı davranışa sahiptir:main()returnreturn 0;main()
int main() { }
int main() { return 0; }
İki makro vardır EXIT_SUCCESSve EXIT_FAILUREtanımlanan, <cstdlib>o da döndü edilebilir main()sırasıyla başarı ve başarısızlığını gösterir.
Döndürülen değer , programı sonlandıran işleve main()iletilir exit().
Tüm bunların yalnızca barındırılan bir ortam için derleme yaparken geçerli olduğunu unutmayın (gayri resmi olarak, tam standart bir kitaplığa sahip olduğunuz ve programınızı çalıştıran bir işletim sistemi bulunan bir ortam). Bağımsız bir ortam (örneğin, bazı gömülü sistemler) için bir C ++ programı derlemek de mümkündür, bu durumda başlatma ve sonlandırma tamamen uygulama tanımlıdır ve bir main()işlev bile gerekli olmayabilir. Modern bir masaüstü işletim sistemi için C ++ yazıyorsanız, barındırılan bir ortam için derliyorsunuz demektir.
maindöndürmeli ile çok yakından ilgilidir veya bir kopyasıdır .