PDA

Prikaži potpunu verziju : C++ i Microsoft ili je pre Microsoftov C++


Brains
7.9.2006, 22:58
Da li sam ja jedini programer koji ne voli Microsoft ili nas ima jos? :n-cc2: Ovo sam morao da postavim zato sto sam se (po ko zna koji put) razocarao u Microsoft. Elem... Instaliram ja Visual Studio 2005 (morao sam, sta cu... poslovni rizik :kreza: ) da bih zavrsio neki seminarski. Ja koji sam batalio matematicki fakultet drzim casove i radim seminarske apsolventima istog (smer racunarstvo)... :eek: Ironije li.... :D Eto, cisto da znate kada upisujete fakultete kakve ce vam biti kolege. Nego, da se vratim na temu. Sve bi bilo divno i bajno da slucajno nisam hteo da menjam i kod windows aplikacije koju sam pravio... Naime, dvoklik na kontrolu mi je otvorio nesto sto me uzasnulo. Prvi put sam u zivotu u C++ video sledece (rekonstrukcija jer sam VS2005 vec deinstalirao i vratio se na 2003):
private: System::Void rbNeEkv_CheckedChanged(System::Object ^ sender, System::EventArgs ^ e)Ako se neko pita u cemu je problem, onaj ^ me "malo" buni. Listajuci C++ izvornik nisam nijednom primetio da se ^ igde koristi. Btw, izvornik nisam procitao od korice do korice pa necu da tvrdim da ne gresim, ali pretpostavljam da ^ nije sastavni deo C++.

Da li mi se to cini ili Microsoft kroji svoj sopstveni C++ :n-cc2: a ne pridrzava se ANSI standarda koji je C++ i ucinio tako popularnim.
Inace da se Microsoft ne drzi standarda najbolje potvrdjuje to sto se u starijem Visual Studiu 6 nije moglo napisati:
for(int i = 0; i < 10; i++) { }
for(int i = 0; i < 10; i++) { }Ovakav kod je davao gresku da je u drugoj petlji i vec inicijalizovana promenljiva. Takodje tokom rada na ovom seminarskom sam imao grdnih problema oko nekih standardnih stvari koje MORAJU da rade, ali u MS VS-u jednostavno nisu. Cisto napomene radi, ulazno-izlazni operateri jednostavno su odbijali da rade iako su prekucani sa Malkovovih vezbi i rade pod drugim kompajlerima.

I posle me pitaju kako mogu da radim u Borlandu. Lepo, lako i po standardu ako vec moram da odgovorim na to pitanje.

holodoc
7.9.2006, 23:11
Ovo je sasvim normalna stvar što se tiče Microsofta. Ako se sećaš MSVC++ 6.0 je defintivno najveći biser po pitanju "rekonstrukcije" standarda C++-a i predstavlja velik problem za bilo koga ko se prebacuje recimo sa Borlanda, gcc-a ili sličnog na Microsoftovo čeljade.

Najbolji dokaz je recimo errata fajl koji dolazi uz početničku knjigu "Teach yourself VisualC++ in 21 days for MS" u kome mogu da se vide sve razlike MSVC++-a u odnosu na standardizovan C++. Ajde da se računa da su gluposti tipa problema sa namespace-om greške ali su neoprostivi primeri recimo taj koji si naveo za for petlje i gomila glupih propusta vezanih za praćenje grešaka u kodu. Da ne pričamo o tome šta sve može da se provuče kroz Micrososftove C++ kompajlere. Recimo jedna od veoma opasnih rabota je i dalje ta da je MS ladno "gutao" vraćanje reference na lokalne objete što stvarno može da bude veliki problem. Bilo koji amaterski kompajler, čak i DevC++, hvata ovakve ispade "u letu".

Negde sam već napisao da sam se grdno razočarao po pitanju verzije 2005 i da sam se takođe vratio na 2003. Jednostavno, sve te dodatne džidža-bidže ne mogu da zamene sate i sate izgubljene u pokušajima da se shvati šta je Microsoft ovoga puta "standardiozovao" :)

priest (of_the_moon)
7.9.2006, 23:53
Ako se neko pita u cemu je problem, onaj ^ me "malo" buni.
^ je exclusive OR (XOR) ili neki drugi (overloaded) operator.
Edit: I da, sastavni je deo c++a.

voodoo_
7.9.2006, 23:58
Ovaj drugi primer (sa integerima) je poznat slučaj nekompatibilnosti C++-a '98 sa ANSI standardom (što ti prvo kažu na početku semestra iz C++-a, kako ne bi koristio VS98 :) ), ali koliko mi je poznato VS2005 C++ je 100% ANSI kompatibilan.
Bilo koji amaterski kompajler, čak i DevC++...
gcc je daleko od amaterskog kompajlera ;)

Brains
8.9.2006, 0:02
^ je exclusive OR (XOR) ili neki drugi (overloaded) operator.
Edit: I da, sastavni je deo c++a.To da se koristi kao operater da, u pravu si... Totalno sam prevideo... Ali u svojstvu pointera, referenci ili tako necega?!?!?!??!?

priest (of_the_moon)
8.9.2006, 1:01
Evo, našao sam najzad u čemu je fora:

In Visual C++ 2002 and Visual C++ 2003, __gc * was used to declare a managed pointer. This is replaced with a ^ in Visual C++ 2005, for example ArrayList^ al = gcnew ArrayList();.

sa http://msdn2.microsoft.com/en-us/library/cxx6f46y.aspx :opanachke

Andross
8.9.2006, 10:02
I u MS VC++ 6.0 ima trip sa OpenGL-om tj. ako se ne include-uje windows.h izbaci neke tri greske vezane za gl.h!Iso bi na Dev-C++ samo da me ne zeza sa OpenGL-om(linker errori).

voodoo_
8.9.2006, 10:52
Pa moraš u opcijama da dopišeš opengl biblioteke za linkovanje.

Andross
10.9.2006, 13:57
Pa dopisem ja a on nece.

holodoc
10.9.2006, 14:48
gcc je daleko od amaterskog kompajlera ;)

Znam, radio sam i radim u njemu na tri platforme (PC, Amiga, Linux) ali sam ovu rečenicu skovao nekako u letu pa dobija totalno drugačije značenje u ovom kontekstu :D

Mislio sam da kažem da se to odnosi na sam DevC++ kao radno okruženje na kome radi mnogo manje ljudi nego recimo u Microsoftu na svojim "čedima". gcc naravno ni u loodilu ne bih svrstao u amaterske kompajere jer mi se iskreno i pored rada u konzoli mnogo više sviđa od nekih ovde već pomenutih :D

voodoo_
10.9.2006, 22:31
Mogu reći da sam prijatno iznenađen 2005-icom, dosta udobnije i pristupačnije deluje od 2003-ojke.