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

Najbolji kompajler

[es] :: C/C++ programiranje :: C/C++ za početnike :: Najbolji kompajler

Strane: 1 2

[ Pregleda: 8352 | Odgovora: 25 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

perun_
Nemanja Andjelkovic
Banglades

Član broj: 151779
Poruke: 115
212.62.55.*

Sajt: 127.0.0.1


Profil

icon Re: Najbolji kompajler09.12.2007. u 21:20 - pre 198 meseci
Reako sam vec da razmislis o ANSII-ju.. Usput, najbolja literatura iz ove oblasti "C++ izvornik", mozes i tu pogledati. To je samo jos jedan plus za GCC. Dakle, mora se pisati "kako je Bog rekao" ( a ne Bill Gates, ili sta ti ja znam ko, dobar je onaj fazon; Koliko je potrebno Microsoftovih(mogu se i uzeti i jos neke velike firme) inzenjera da zamene sijalicu? Nijedan, proglasice mrak za standard! ). Suludo je napisati nesto, i onda juriti compiler koji ce to da prevede. Mozes li ovaj "novi" code kompajlirati bcc-om? (bas me zanima)

Ne treba ciljati u metu vec metati u cilj
 
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: Najbolji kompajler09.12.2007. u 21:56 - pre 198 meseci
Kompajlira i ovaj sa const. Ali ja imam osjećaj da gcc ništa nema po default-u. Zar se mora ispred imena f-je pisati int, ako f-ja vraća cjelobrojnu vrijednost. Int je valjda podrazumijevano...
I ♥ ♀

Ovaj post je zlata vrijedan!
 
Odgovor na temu

perun_
Nemanja Andjelkovic
Banglades

Član broj: 151779
Poruke: 115
212.62.55.*

Sajt: 127.0.0.1


Profil

icon Re: Najbolji kompajler09.12.2007. u 22:14 - pre 198 meseci
Definitivno mora stajati int ispred.. Nisam ni znao da je to default... Hmmm
Ne treba ciljati u metu vec metati u cilj
 
Odgovor na temu

cirra

Član broj: 152450
Poruke: 102
*.jotel.co.yu.



Profil

icon Re: Najbolji kompajler10.12.2007. u 08:31 - pre 198 meseci
kOLEGE FORUMASI
Ima li ko da odgovori koji je kompajler najbolji za grafiku
 
Odgovor na temu

Časlav Ilić
Braunšvajg, Nemačka

Član broj: 4945
Poruke: 565
*.pool.mediaWays.net.



+27 Profil

icon Re: Najbolji kompajler10.12.2007. u 11:19 - pre 198 meseci
Citat:
icobh: Mene zanima jedna stvar. Zašto mogu da ovaj kôd kojeg sam ja lično pisao, da kompajliram kod sebe, kolege, na faxu i to sa bcc-om, msvc-om ali ne i sa gcc-om? Zašto to? Zašto to sad jedno const igra toliku ulogu?


Pretpostavljam zato što standard (ANSI, ISO, šta li) negde kaže da je prototip kopirajućeg konstruktora je T (const T &) i nikoji drugi. GCC ti onda u poruci greške praktično kaže da tvoja klasa nema ispravan kopirajući konstruktor. Dakle, GCC se podrazumevano (bez posebnih opcija) ponaša po standardu — što je dobro — dok ti na faksu i kod kolege ne — što je loše. Kao što Nemanja već reče.

E sad, i standarde pišu ljudi, pa je uvek bitno uočiti zašto je dobro tako kako je standard propisao. Kopirajući se poziva u mnogim situacijama nad objektom koji je privremeno konstruisan u lancu naredbi. Tada, ako bi mu bilo dozvoljeno da prima nekonstantni upućivač, prvo bi mogao da izmeni taj privremeni objekat (znači mogući gubitak podataka), i drugo ne bi mogao više da funkcioniše kada se u lancu pojavi konstantan objekat. Zato nema smisla da kopirajući prima nekonstantni upućivač.

Na strani izvedbe, GCC bi (kao i ti drugi) po uobičajenom mehanizmu poklapanja poziva i prototipa mogao komotno da pozove onaj sa nekonstantnim upućivačem. Dalje, ako ispratiš redosled poziva pri izvršavanju, videćeš da GCC nigde nije ni pozvao kopirajući; npr. Skup tmp3(c.unija(a.unija(b))), uz drugačije definicije ovih funkcija, moglo je biti i brzinski optimalnije Skup tmp3; unija(a, unija(b, unija(c, tmp3))), što je GCC primetio i sam transformisao u izlaznom kôdu. Drugim rečima, GCC je em mogao da pozove prvobitni kopirajući, em mu kopirajući čak nije ni trebao, pa ti je opet prijavio grešku. To znači da su se programeri koji rade na GCCu morali potruditi da dodaju ovo kao posebnu mogućnost, a koja se tebi čini kao njegova loša osobina :)

Kad već pomenuh gore automatsku optimizaciju, probaj sa tim BCCom i MSVCom da prisiliš poziv kopirajućeg. Npr. staviš Skup tmp1b(tmp1);, i daj kopirajućem da nešto ispiše, da budeš siguran da je pozvan. Da li tada kôd i dalje prolazi? (Moguće je da su se zeznuli pri optimizaciji, da ne proveravaju prototip kopirajućeg kada primete da nije ni potreban.)
 
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: Najbolji kompajler10.12.2007. u 13:09 - pre 198 meseci
@Časlav Ilić
Probao sam:
Code:
Skup tmp1b(tmp1);

gdje sam konstruktor kopije prvo napisao bez const u parametru pa sam onda sa const. I MSVC i BCC gutaju oba kôda i sve radi. Konstruktor kopije se regularno poziva u oba slučaja. Samo GCC neće bez const.

@perun_
Npr. Ovaj kôd guta GCC a vidi se da fali int prije main. Dok MSVC kaže da u C++-u ne važi int-default. BCC takođe kompajlira bez problema...
Code:
#include <iostream>

using namespace std;

main() {
    system("pause");
    return EXIT_SUCCESS;
}

I ♥ ♀

Ovaj post je zlata vrijedan!
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Najbolji kompajler

Strane: 1 2

[ Pregleda: 8352 | Odgovora: 25 ] > FB > Twit

Postavi temu Odgovori

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