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

Cudno ponasanje kompjalera!?

[es] :: C/C++ programiranje :: Cudno ponasanje kompjalera!?

[ Pregleda: 3599 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Durst
Marko Smiljanic
Bgd

Član broj: 6751
Poruke: 32
*.ptt.yu



Profil

icon Cudno ponasanje kompjalera!?22.07.2003. u 02:27 - pre 229 meseci
Pozdrav narode,

Imam jedno pitanje:
Program koji je ukljucivao definisanje array-a preko string funkcije size() nisam uspeo da kompajliram pod borlandom 5.5 i Visual C++ 6.0, ali je zato perfektno radio sa gcc i MinGW.

Pa, ko odstupa od ISO C++ standarda u ovom pitanju i koliko je to rasprostranjeno po ostalim delovima kompajlera koji su prisutni. Hocu reci da li postoje vece razlike u razlicitim kompajlerima ili je sve to zanemarljivo.

 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
..ndg-pm4-2.dialup.nethere.net



+6 Profil

icon Re: Cudno ponasanje kompjalera!?22.07.2003. u 05:15 - pre 229 meseci
Možeš li da tačno navedeš kod koji je pravio probleme? U principu, VC 6.0 nije preterano u skladu sa standardom (što i nije čudno s obzirom da je objavljen pre standarda), ali nikad se ne zna.
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.racasse.se

Sajt: dejan.lekic.org


+2 Profil

icon Re: Cudno ponasanje kompjalera!?22.07.2003. u 10:45 - pre 229 meseci
Da, bilo bi lepo ako kritikujes da to obrazlozis sa primerom, pa da vidimo da li gresis ili ne, ovako sve ostaje samo na tvojim (za sada praznim) recima.
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

tvucko
Tomo Vučković
Novi Sad

Član broj: 1364
Poruke: 178
*.nis-naftagas.co.yu

Jabber: tvucko@elitesecurity.org
ICQ: 332563031
Sajt: atomixlinux.org


Profil

icon Re: Cudno ponasanje kompjalera!?22.07.2003. u 13:40 - pre 229 meseci
Posalji kod pa cemo da vidimo.
Nahrani prasiće ne diraj dugmiće !!!
 
Odgovor na temu

Durst
Marko Smiljanic
Bgd

Član broj: 6751
Poruke: 32
*.ptt.yu



Profil

icon Re: Cudno ponasanje kompjalera!?22.07.2003. u 18:29 - pre 229 meseci
Nije mi bila namera da kritikujem ni VC ni Borland ni GCC ni MinGW. Tek pocinjem da ucim C/C++ i ne treba mi nikakav flame vec konkretno koji od ova 4 kompajlera je najpriblizniji standardu, da bih znao koji od njih da koristim.

Kod izgleda ovako otprilike:

Code:


#include <iostream>
#include <string>
using namespace std;

int main(int argc, char* argv[])
{
     string line = string (argv[1]);
     int l [line.size()];

     return 0;
}



Molim vas ako nesto ovde nije dobro ispravite me, jer sam manje vise radio po Eckelovoj knjizi. Ako vi niste naisli na ovako nesto i ako je ovaj kod tacan da li je moguce da su kod mene nekako osakaceni kompajleri?

Ponavljam ovo nije kritika vec pitanje koji od ova 4 kompjalera najpribliznije odgovara standardu, da bih taj koristio (ne vredi da ucim po necemu sto nije tacno, zar ne?).

PS:
Dao sam samo segment koda jer je ostatak manje vise nebitan (Borland i VC mi gresku prijavljuju kod int l [line.size()], dok GCC i MinGW prolaze).
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
199.171.112.*



+6 Profil

icon Re: Cudno ponasanje kompjalera!?22.07.2003. u 18:37 - pre 229 meseci
Ova linija

int l [line.size()];

Nije ispravna po C++ standardu. Dužina ovako definisanog niza mora biti poznata u vreme kompajliranja - dakle konstanta.

Međutim, po C99 standardu (koji je C, a ne C++ standard), ovako nešto je dozvoljeno i verovatno zato prolazi sa gcc-om (uzgred, nisi napisao koja verzija). Međutim, pošto je tvoj program očigledno C++ a ne C, definitivno bi kompajler trebalo da prijavi grešku. No, sad ću da probam da kompajliram sa gcc-om, pa da vidim šta se zaista dešava.

[Ovu poruku je menjao Dragi Tata dana 22.07.2003. u 09:56 GMT]
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
199.171.112.*



+6 Profil

icon Re: Cudno ponasanje kompjalera!?22.07.2003. u 18:45 - pre 229 meseci
Hmmmmm...

Code:

E:\arraytest>g++ main.cpp -o array.exe

E:\arraytest>dir
 Volume in drive E is 19gb
 Volume Serial Number is DC54-815F

 Directory of E:\arraytest

07/22/2003  08:26a      <DIR>          .
07/22/2003  08:26a      <DIR>          ..
07/22/2003  08:26a             449,085 array.exe
07/22/2003  08:24a                 189 main.cpp
07/22/2003  08:22a                   0 main.cpp~
               3 File(s)        449,274 bytes
               2 Dir(s)  11,420,049,408 bytes free

E:\arraytest>array.exe

abnormal program termination

E:\arraytest>g++ -v
Reading specs from C:/MinGW/bin/../lib/gcc-lib/mingw32/3.2/specs
Configured with: ../gcc/configure --with-gcc --with-gnu-ld --with-gnu-as --host=
mingw32 --target=mingw32 --prefix=/mingw --enable-threads --disable-nls --enable
-languages=f77,c++,objc,ada --disable-win32-registry --disable-shared
Thread model: win32
gcc version 3.2 (mingw special 20020817-1)

E:\arraytest>


Leko?
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
199.171.112.*



+6 Profil

icon Re: Cudno ponasanje kompjalera!?22.07.2003. u 18:55 - pre 229 meseci
Ako sam dobro ukapirao, to je bag u gcc-u:

http://gcc.gnu.org/ml/gcc/2002-09/msg00579.html
 
Odgovor na temu

filmil
Filip Miletić
Oce Technologies B.V., inženjer
hardvera
Arcen, NL

Član broj: 243
Poruke: 2114
*.et.tudelft.nl

Jabber: filmil@jabber.org
ICQ: 36601391


+3 Profil

icon Re: Cudno ponasanje kompjalera!?22.07.2003. u 19:22 - pre 229 meseci

Na gcc 3.2.2, linux kompajliranje prolazi i to se slaže sa Tatinom primedbom.

Samo mi nije jasno šta se dešava kada se program pokrene bez argumenata pa je line.size()==0? Inače to proizvodi abnormal program termination, odn. Aborted poruku, a ne mešanje standarda.

Druga stvar koja je možda bitna jeste da metod size() vraća veličinu strukture koja pamti string, a da se dužina stringa dobija sa length()!

f
 
Odgovor na temu

Durst
Marko Smiljanic
Bgd

Član broj: 6751
Poruke: 32
*.ptt.yu



Profil

icon Re: Cudno ponasanje kompjalera!?22.07.2003. u 19:52 - pre 229 meseci
OK znaci int l [line.size()] je ilegalno i ne bi trebalo da prodje ni kod jednog.

Puno hvala, ljudi!

PS:
Kod je bio za vezbu, pa nisam hteo da se petljam sa uslovima, i zato nisam pokrio situaciju kada je bez argumenata.

PPS:
Gde moze da se nadje neka referenca sa tim standardom da vise ne moram da razbijam glavu o tome sto ovo radi pod gcc-om, a ne pod borlandom i obrnuto, vec da pogledam tamo oko ovih i slicnih propusta.
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
199.171.112.*



+6 Profil

icon Re: Cudno ponasanje kompjalera!?22.07.2003. u 20:08 - pre 229 meseci
Inače, da odgovorim na tvoje pitanje o kompajlerima i standardu. Koliko znam, postoji samo jedan kompajler koji je 100% u skladu sa standardom, a to je Comeau 4.3.0. Međutim, moj je savet da se držiš dva kompajlera, a to su Visual C++ 7.1 (besplatna verzija kompajlera je uključena u .NET SDK 1.1) i gcc (mingw) od verzije 3 pa naviše (ne mogu da verujem da nekom preporučujem GNU software, mora da sam ostario :) ). Oba su dosta dobro usklađena sa standardom a koriste se mnogo više nego Comeau.
 
Odgovor na temu

dust
Dušan Stefanović

Član broj: 9827
Poruke: 33
*.rcub.bg.ac.yu



Profil

icon Re: Cudno ponasanje kompjalera!?23.07.2003. u 03:14 - pre 229 meseci
Cini mi se da je ovo gnu ekstenzija, mislim da je radilo i sa starim verzijama.

Trebalo bi da postoji opcija koja zahteva iso kompatibilnost koda (ne secam se tacno koja je)
pogledaj info gcc

pozdrav,
Dule
 
Odgovor na temu

[es] :: C/C++ programiranje :: Cudno ponasanje kompjalera!?

[ Pregleda: 3599 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

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