Page 1 of 1

g++ compiler vs Visual Studio compiler

Posted: 24 Oct 2014, 10:33
by black_atus
Lucrez la o aplicatie care se compileaza si pe Windows(cu Visual Studio) si pe Linux(g++) si am descoperit o chestie destul de ciudata pe care vreau sa o impartasesc...
Presupunand ca avem urmatorul cod:
std::map<double, std::map<double, double> > mTest;
...
alt cod..
...
std::map<double, std::map<double, double>>::iterator it = mTest.begin();
...
Compileaza cu Visual Studio dar cu g++ pica..
"error: `>>' should be `> >' within a nested template argument list"

Problema fiind un spatiu...

Ati mai gasit probleme asemanatoare? adica sa se compileze cu VS dar nu cu gcc/g++ ?

Re: g++ compiler vs Visual Studio compiler

Posted: 24 Oct 2014, 13:40
by bu7ch3r
Visual studio face el treaba pentru tine(ma gandesc ca ai 2010 sau 2012), g++ nu.
VS e destul de destept sa-si dea seama cand inchizi template-urile si cand apelezi operatorul >> - e o chestie legata de cum parseaza el codul, cred.
Cateodata da erori de acest fel si VS stai linistit - sau mai grozave, de nici nu-ti dai seama de ce nu compileaza.

E clar cred care varianta e mai prietenoasa cu compilatoarele.

Ce versiune de gcc folosesti? Incearca sa pui flag-ul de c++11(std=c++11).

BTW, double? Vezi ca floatii in programare is cam nebuni si 3.000 s-ar putea sa fie azi 2.99997, maine 3.000001 ;) Sa vezi ce fain o sa fie cand ai sa vrei sa cauti o cheie de care esti sigur ca exista si map-ul iti zice ca NU-I.

Re: g++ compiler vs Visual Studio compiler

Posted: 31 Oct 2014, 13:59
by black_atus
gcc 4.8 parca..Exemplul de mai sus e doar un exemplu, nu l-am folosit in cod. Oricum mersi pentru sfatul legat de cheile de tip double. E foarte bine de luat in considerare mai ales ca am mai avut probleme cu numere cu multe zecimale..

Re: g++ compiler vs Visual Studio compiler

Posted: 31 Oct 2014, 21:08
by bu7ch3r
uite:
asta merge pe c++11

http://ideone.com/fork/WDHluk

daca schimb compilatorul pe 4.8 "fara c++11" nu merge:\
http://ideone.com/m488te

Sa fie asta ultima ta problema in programare ;)