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

zasto main bez return nema warninga?

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

[ Pregleda: 625 | Odgovora: 9 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

virtualVoid
Herzegovina

Član broj: 161084
Poruke: 181
77.221.8.*



Profil

icon zasto main bez return nema warninga?30.12.2007. u 17:09

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.
Yah...
30.12.2007. u 17:09 

icobh
Igor Pejašinović
PEJAŠINOVIĆ LTD.
Stara Dubrava, RS, BiH

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

Sajt: localhost


Profil

icon Re: zasto main bez return nema warninga?30.12.2007. u 18:24
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!
30.12.2007. u 18:24 

virtualVoid
Herzegovina

Član broj: 161084
Poruke: 181
77.221.8.*



Profil

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

Sephiroth?
Biondic Denis
Balkan @ net

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



Profil

icon Re: zasto main bez return nema warninga?30.12.2007. u 19:33
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...
Dvije stvari su bezgranicne : svemir i ljudska glupost, a za ovo prvo nisam ni siguran.
~ Albert Einstein
30.12.2007. u 19:33 

icobh
Igor Pejašinović
PEJAŠINOVIĆ LTD.
Stara Dubrava, RS, BiH

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

Sajt: localhost


Profil

icon Re: zasto main bez return nema warninga?30.12.2007. u 20:02
^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!
30.12.2007. u 20:02 

Sephiroth?
Biondic Denis
Balkan @ net

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



Profil

icon Re: zasto main bez return nema warninga?30.12.2007. u 20:06
Da, upravu si, ali nemam kopije standarda, dok ne nabavim ne zelim se upustati u diskusiju koji se kompajler vise pridrzava istog;) Pozdrav
Dvije stvari su bezgranicne : svemir i ljudska glupost, a za ovo prvo nisam ni siguran.
~ Albert Einstein
30.12.2007. u 20:06 

virtualVoid
Herzegovina

Član broj: 161084
Poruke: 181
77.221.8.*



Profil

icon Re: zasto main bez return nema warninga?30.12.2007. u 22:25
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.


Yah...
30.12.2007. u 22:25 

1jedini
Dejan Milosavljevic
BG

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

Sajt: www.ddmrm.com


Profil

icon Re: zasto main bez return nema warninga?31.12.2007. u 10:17
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
31.12.2007. u 10:17 

karas

Član broj: 5574
Poruke: 346
89.216.197.*



Profil

icon Re: zasto main bez return nema warninga?31.12.2007. u 10:33
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."
31.12.2007. u 10:33 

icobh
Igor Pejašinović
PEJAŠINOVIĆ LTD.
Stara Dubrava, RS, BiH

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

Sajt: localhost


Profil

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

Ovaj post je zlata vrijedan!
31.12.2007. u 10:49 

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

[ Pregleda: 625 | Odgovora: 9 ]

Postavi temu Odgovori

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