2 Nisan 2019 Salı

Main Metodu

C++ 11
C++ main metodu mantık ve sözdizim olarak C ile aynı. Ancak C++11 ile main metodu şöyle de tanımlanabilir hale geldi.
auto main() -> int
{...}
C
Main'in parametreleri
Main metodu parametreli veya parametresiz yazılabilir.
1. Parametresiz 
Eğer parametresiz yazılırsa Posix bir daha parametrelere erişmek için imkan tanımıyor. Bazı platformalar bu imkanı tanısa da portable değildir.

1.1
Şöyle yaparız
int main()
{
   //Code
}
Bu kullanım metodun belirsiz sayıda (indeterminate) parametre alacağını gösterir.

1.2
Parametre almayan metodlara void verebildiğimiz için şöyle de yazılabilir.
int main(void)
Eğer int main (void) şeklinde yazarsak bu metodun hiç parametre almayacağını belirtiriz. Bu durumda compiler bizim için küçük bir değişiklik yapar.

1.3
K&R'de gösterilen parametresiz kod çok eski ve kullanılmamalı.
main() {
  blah blah blah;
}
2. Parametreli
2.1 
Şöyle yaparız.
int main(int argc, char * argv[])
{
   //code
}
veya const argv şeklinde olabilir.
int main(int argc, const char * argv[]) 
Array yerine şöyle de yazılabilir.
int main(int argc, char **argv)
3. Derleyiciye Özel İmza
Bazı derleyiciler kendilerine özel şu imzayı da kabul ederler.
int main (int argc, char* argv[], char *envp[]) { body }
Parametreler

argv parametresi
Açıklaması şöyle. argc sıfırdan büyük ise  argv'nin diğer birinci konumdan başlayarak uygulamaya geçilen parametrelere erişiriz.
If the value of argc is greater than zero, the array members argv[0] through argv[argc-1] inclusive shall contain pointers to strings, which are given implementation-defined values by the host environment prior to program startup.
argv “char* argv[]” olarak tanımlanır, çünkü argv bir array'dir ve array'in her bir elemanı char* olarak kabul edilir. Dolayısıyla argv sadece“char* argvolamaz!
Örnek
Uygulamamızı şöyle çalıştıralım
./program hello world
Şunu alırız.
argc = 3
argv[0] --> "./program\0"
argv[1] --> "hello\0"
argv[2] --> "world\0"
Return Değeri
Açıklaması şöyle.
If no return statement is provided, the compiler will provide a return 0; as the last statement in the function body.
Linker
Tek bir main metodu olmalıdır. Açıklaması şöyle.
The linker requires that one and only one main() function exist when creating an executable program.


Hiç yorum yok:

Yorum Gönder