Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

zasto main bez return nema warninga?

[es] :: C/C++ programiranje :: C/C++ za početnike :: zasto main bez return nema warninga?

[ Pregleda: 2047 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

virtualVoid

Član broj: 161084
Poruke: 698



+28 Profil

icon zasto main bez return nema warninga?30.12.2007. u 17:09 - pre 198 meseci
Ispricavam se ako ovo zvuci previse lame, ali cini mi se da sam u ranijim vezijama Borlandovog i VS kompajlera dobivao poruku ako main() funkcija nema povratnu vrijednost 'return 0'. Medjutim ovakav kod u VS 2005 mi ne daje nikakva upozorenja (warninge)

Code:
#include <iostream> 
using namespace std; 
int main()
{

}


Ocigledno se radi o nekom novom pravilu o neprijavljivanju ovoga propusta, samo ne znam zbog cega je to uradjeno.

Takodjer, kakve uopce probleme mozemo ocekivati ako ne stavimo u main 'return 0'? Main ce ionako zavrsiti sa zatvarajucom viticastom zagradom.
...
 
Odgovor na temu

icobh
Igor Pejašinović
Network Admin
Navigo SC d.o.o.
Banja Luka

Član broj: 18738
Poruke: 1319
*.inecco.net.

Sajt: www.nsc.ba


+4 Profil

icon Re: zasto main bez return nema warninga?30.12.2007. u 18:24 - pre 198 meseci
A return statement in main() has the effect of leaving the main function (destroying any objects with
automatic storage duration) and calling exit() with the return value as the argument. If control reaches
the end of main without encountering a return statement, the effect is that of executing
return 0;
I ♥ ♀

Ovaj post je zlata vrijedan!
 
Odgovor na temu

virtualVoid

Član broj: 161084
Poruke: 698



+28 Profil

icon Re: zasto main bez return nema warninga?30.12.2007. u 18:36 - pre 198 meseci
Fino, znaci bio sam u pravu za zagrade, a valjda zbog istoga se ne javlja ni warning
...
 
Odgovor na temu

Sephiroth?
Balkan @ net

Član broj: 79406
Poruke: 82
*.bi2.dlp438.bih.net.ba.



Profil

icon Re: zasto main bez return nema warninga?30.12.2007. u 19:33 - pre 198 meseci
Da, program bi radio u oba slucaja, ali mislim da je ovdje rijec o nacinu pridrzavanja standarda pojedinog kompajlera... Nisam siguran, ali mislim da je bilo, ili jos uvijek jeste, da main funkcije vracaju povratnu vrijednost, kao i da povratna vrijednost main-a mora biti int. Nedavno je bila jedna diskusija da li copy constructor treba primati Objekat(const Objekat&) ili samo Objekat(Objekat& ), jer gcc pri tome izbacuje error, dok VS, bcc i ostali kompajliraju bez problema. Ispostavilo se da je const & propisano po standardu, te se gcc toga pridrzava, dok ostali ne. Mislim da je i ovdje slican slucaj...
 
Odgovor na temu

icobh
Igor Pejašinović
Network Admin
Navigo SC d.o.o.
Banja Luka

Član broj: 18738
Poruke: 1319
*.inecco.net.

Sajt: www.nsc.ba


+4 Profil

icon Re: zasto main bez return nema warninga?30.12.2007. u 20:02 - pre 198 meseci
^Ne, ispostavilo se da jedino GCC baš traži const, a po standardu može a i ne mora const. Stoga, MSVC i BCC su više po standardu od GCC-a u ovom slučaju jer kompajliraju i jedan i drugi slučaj, dok kod GCC-a moraš da se odlučiš...
I ♥ ♀

Ovaj post je zlata vrijedan!
 
Odgovor na temu

Sephiroth?
Balkan @ net

Član broj: 79406
Poruke: 82
*.bi2.dlp412.bih.net.ba.



Profil

icon Re: zasto main bez return nema warninga?30.12.2007. u 20:06 - pre 198 meseci
Da, upravu si, ali nemam kopije standarda, dok ne nabavim ne zelim se upustati u diskusiju koji se kompajler vise pridrzava istog;) Pozdrav
 
Odgovor na temu

virtualVoid

Član broj: 161084
Poruke: 698



+28 Profil

icon Re: zasto main bez return nema warninga?30.12.2007. u 22:25 - pre 198 meseci
Citat:
Sephiroth?: Da, program bi radio u oba slucaja, ali mislim da je ovdje rijec o nacinu pridrzavanja standarda pojedinog kompajlera... Nisam siguran, ali mislim da je bilo, ili jos uvijek jeste, da main funkcije vracaju povratnu vrijednost, kao i da povratna vrijednost main-a mora biti int. Nedavno je bila jedna diskusija da li copy constructor treba primati Objekat(const Objekat&) ili samo Objekat(Objekat& ), jer gcc pri tome izbacuje error, dok VS, bcc i ostali kompajliraju bez problema. Ispostavilo se da je const & propisano po standardu, te se gcc toga pridrzava, dok ostali ne. Mislim da je i ovdje slican slucaj...


Tocno, C++ standad propisuje da main() funkcija ne moze biti void main() kao sto treba kod Jave ili C#, nego mora biti int main(). Mislim da Devcpp cak to prijavljuje kao gresku (ili mozda Borland, nisam siguran), ali VS 2005 ovo ne samo da ne prijavljuje nego mi se cini da i ne trazi ono return 0.

A ne vidim cemu prevelika diskusija oko const Klasa& objektOriginal. Konstruktor kopije ne mijenja originalni objekt, zato i nije tako cudno da bi se trebalo zahtijevati da parametar bude const objekt.


...
 
Odgovor na temu

1jedini
Dejan Milosavljevic
BG

Član broj: 102721
Poruke: 74
*.dynamic.sbb.co.yu.



Profil

icon Re: zasto main bez return nema warninga?31.12.2007. u 10:17 - pre 198 meseci
Citat:
icobh: A return statement in main() has the effect of leaving the main function (destroying any objects with
automatic storage duration) and calling exit() with the return value as the argument. If control reaches
the end of main without encountering a return statement, the effect is that of executing
return 0;

Na ovo bih samo dodao 3.6.1-5.
AKA DDMM
 
Odgovor na temu

karas

Član broj: 5574
Poruke: 482
89.216.197.*



+1 Profil

icon Re: zasto main bez return nema warninga?31.12.2007. u 10:33 - pre 198 meseci
GCC 3.4.6 ne zahteva da konstruktor kopije bude const i dozvoljava da se prosleđeni parametar promeni:
Code:

#include <iostream>
#include <string>


using namespace std;


class My
{
private:

    string _s;

public:

    My() : _s()
    {
    }
    
    
    ~My()
    {
    }
    
    
    My(string s) : _s(s)
    {
    }
    
    
    My(My& o) : _s(o._s)
    {
        o._s = "world";
    }
    
    
    void print()
    {
        cout << _s << endl;
    }
};


int main()
{
    My a("hello");
    My b(a);
    b.print();
    a.print();
    
    return 0;
}

Sveti Avgustin: "Dobar hrišćanin treba da se kloni matematičara i svih onih koji daju lažna proročanstva. Postoji opasnost da su matematičari već sklopili pakt sa Đavolom, da pomrače čovekov um i da ga okuju okovima pakla."
 
Odgovor na temu

icobh
Igor Pejašinović
Network Admin
Navigo SC d.o.o.
Banja Luka

Član broj: 18738
Poruke: 1319
*.inecco.net.

Sajt: www.nsc.ba


+4 Profil

icon Re: zasto main bez return nema warninga?31.12.2007. u 10:49 - pre 198 meseci
Mislim da je od ovih korištenijih kompajlera najproblematičniji GCC u verziji 3.4.2.
I ♥ ♀

Ovaj post je zlata vrijedan!
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: zasto main bez return nema warninga?

[ Pregleda: 2047 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.