Pokaż wyniki 1 do 7 z 7

Temat: typ MAIN

  1. #1
    Zarejestrowany
    Jan 2009
    Postów
    24

    Domyślnie typ MAIN

    Chodzi mi o funkcję main()

    Przy deklaracji nadajesz jej typ – zazwyczaj jest to ‘int’ – a jak nie podasz to int przyjmowany jest defaultowo.

    Przykład:

    int main()
    {
    return 0;
    }

    Tutaj f-cja zwraca kod 0 do main – ale można deklarować również w ten sposób:

    void main()
    {
    }

    I tutaj nie musisz zwracać wartości przez return, bo main jest typu void.

    No i nie bardzo rozumiem kiedy to się stosuje. Wszędzie w zasadzie jest main typu int ale jak zrobisz void to też się kompiluje i program działa poprawnie.
    Rozumiem co znaczy zwracanie typu przez f-cje ale nie bardzo rozumiem zastosowania w przypadku MAIN : P

  2. #2
    Zarejestrowany
    Jul 2008
    Skąd
    PL
    Postów
    135

    Domyślnie

    main() zwraca wartość w przypadku zamknięcia/zakończenia programu, dlatego powinno się deklarować main() jako int main() i zawsze zwracać wartość.

    Wtedy proces wywołujący (nadrzędny) otrzymuje informację, że program zakończył się prawidłowo.
    "...i stało się! Linie telefoniczne otworzyły mi bramę do świata
    upajającego jak heroina pulsująca w żyłach ćpuna! Elektronicznym
    sygnałem przekraczam wrota szukając ucieczki od codzienności,
    głupoty i niesprawiedliwości... i znajduję podobnych sobie."

  3. #3
    Avatar javaman
    javaman jest offline www.javainside.pl
    Zarejestrowany
    Mar 2008
    Skąd
    no przed monitorem przecież...
    Postów
    474

    Domyślnie

    Pisales kiedykolwiek jakieś skrypty shellowe? Często przy tym potrzebna jest wiedza tak jak kolega @up napisał czy program zakończył się prawidłowo - większość programików zwraca 0 dla prawidłowego zamknięcia i 1 przy błędzie. Wiesz wtedy np. czy zatrzymać dalsze wykonywanie skryptu czy ma lecieć dalej.

  4. #4
    Zarejestrowany
    Jul 2008
    Skąd
    PL
    Postów
    135

    Domyślnie

    Dokładnie.
    Rozwijając to, co napisał @Javaman, prawidłowa definicja f-cji main() powinna wyglądać tak:

    Kod:
    int main(int argc, char *argv[]) {
    
     ...
    
    return(0);
    
    }
    "...i stało się! Linie telefoniczne otworzyły mi bramę do świata
    upajającego jak heroina pulsująca w żyłach ćpuna! Elektronicznym
    sygnałem przekraczam wrota szukając ucieczki od codzienności,
    głupoty i niesprawiedliwości... i znajduję podobnych sobie."

  5. #5
    Zarejestrowany
    Jan 2009
    Postów
    24

    Domyślnie

    Skryptów shellowych to większych nie pisałem. Największy to menu autoexec.bat : P

    Generalnie to rozjaśniliście mi, że 0 znaczy że program wykonał się prawidłowo i jest to informacja dla OS.

    Zastanawiam się w takim razie dla jakiego przypadku albo w jakim celu można main zadeklarować jako void ? jak jest się pewnym swoich nieomylnych linijek kodu? hehe

  6. #6
    Avatar javaman
    javaman jest offline www.javainside.pl
    Zarejestrowany
    Mar 2008
    Skąd
    no przed monitorem przecież...
    Postów
    474

    Domyślnie

    To jest informacja zwracana z programu. Void możesz zadeklarować np. jeśli i tak nie zamierzasz zwracac info do systemu a zamiast tego masz np. obsluge bledu ktora wypisze cos na ekran. Zwracanie info należy jednak do dobrych praktyk programistycznych

  7. #7
    Zarejestrowany
    Jan 2009
    Postów
    216

    Domyślnie

    int to typ - 4 bajty. void to tez 4 bajty. poprostu komus sie nudzilo.
    return XXXX to nic innego, jak push XXXX / call ExitProcess, kolejna glupota, bo powinno byc wracanie pod adres powrotu (ExitThread) i przekazywanie wartosci w eax, ehh... to jest dla windowsa, pod libcem masz chyba exit(), i zasada analogiczna.

    Jakbys wiedzial co piszesz, to bys nie zadawal takich pytan.

Podobne wątki

  1. Typ MIME dokumentu
    By Macok in forum Hacking
    Odpowiedzi: 4
    Autor: 08-30-2008, 01:35
  2. Odpowiedzi: 21
    Autor: 04-06-2008, 23:33
  3. int main
    By SARS in forum C/C++
    Odpowiedzi: 7
    Autor: 03-31-2008, 08:42
  4. Hash-typ, kodowanie
    By michalski007 in forum Kryptografia
    Odpowiedzi: 1
    Autor: 10-08-2007, 20:22

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52