Eli mitä eroa noilla kahdella on (C++ ja VC++)? VC++ tarkottaa VisualC++, muuta mä en niiden eroista sitte tiedäkää.
C++ on se kieli, visual c++ taitaa olla joku C++-IDE (vai onko?) eli joku ohjelma jolla sitä c++:aa voi tehdä kätevästi.
joo VC++ eli VisualC++ on Microsoftin tekemä IDE.
Pilkunviilausta: VC++ on IDE:n lisäksi ennenkaikkea c++ -kääntäjä.
Lisää pilkunviilausta: Eikös se IDE ole poikkeuksetta Visual Studio, eli VC++ on vain kääntäjä (ja ehkä myös MS:n lisäkirjastokokoelma).
Minä erottaisin nämä kahteen kastiin: .NET ja ei-.NET -tuotteisiin.
Ennen .NET-aikaa Visual C++ oli oma IDEnsä ja Visual Studio yhteisnimitys kaikille Visual -sarjan tuotteille (C++, Basic, J++, FoxPro...). Kääntäjä tuossa on täysin VC++-IDEstä erillinen (cl.exe), nimeltään muistaakseni "Microsoft Optimizing C/C++ compiler".
.NET:ssä esiteltiin uusi IDE, joka on kaikille kielille sama, jolloin minusta voi puhua Visual Studiosta IDEnä, vaikka tuon virallinen nimi taitaakin olla "Microsoft Development Environment". Näin .NET-aikana "Visual C++" onkin minusta lähinnä Visual Studion osa, kääntäjä tuossa paketissa on joka tapauksessa edelleen tuo Microsoft Optimizing C/C++ compiler", versiota vain on nostettu ylöspäin.
Samoilla linjoilla Blazen kanssa, että se Studio on se IDE joka sitten käyttää eri kääntäjiä.
Visual C++ on hankala erottaa standardi c++:sta koodissa. (Studio.Net-versiolla osaa standardi c++ huomattavasti paremmin kuin Studio 6.0.)
Itse sanoisin Visual C++:ksi näitä microsoft extensioneita joilla on laajenettu C++:aa MS:n toimesta. Ensimmäiseksi tulee mieleen active template library ja try-catch poikkeuskäsittelyn MS versio joka sisältää __finally:t yms.
MSDN:ää kun lukee niin siellä mainitaan selvästi, että mikä on microsoft spesific (VC++) ja mikä C++ standardia.
Yksinkertaisesti sanottuna Visual C++ on microsoftin laajennettu versio c++:sta (eli ihan täysiverinen ohjelmointikieli), jolla on mahdollisuus kehittää graafisia käyttöliittymiä (standardissa c++:ssa tätä mahdollisuutta ei ole).
Rutkis mainitsi myös standardista poikkeavat funktiot, johon voisin tarkentaa, että ne tunnistaa alaviivoista funktionimien edessä (kertoo että funktio ei kuulu standardiin).
Paitsi että mikkisofta on tehnyt muutoksia tuohon c++ -standardiin liittyen. Esim. for-loopissa esitelty muuttuja on vielä 'hengissä' loopin päätyttyäkin. Varsin rasittava feature jos käytössä on useampi kääntäjä ja uudelleenkäytettäviä classeja. Meni melkein aina muuttujaesittelyt uusiksi kun teki classin ensin toisella kääntäjällä ja otti sen myöhemmin käyttöön mikkisoftaprojektissa.
Eli suomentakaas nyt joku. Jos kyhään ihan standardien mukasta cpp koodia, niin kääntyykö se VC++:lla? Entäs toisinpäin jos käytän VC:tä apuvälineenä niin sietääkö muut kääntäjät sitä koodia?
Minä kirjoitti:
Jos kyhään ihan standardien mukasta cpp koodia, niin kääntyykö se VC++:lla?
Joo.
Minä kirjoitti:
Entäs toisinpäin jos käytän VC:tä apuvälineenä niin sietääkö muut kääntäjät sitä koodia?
Ei välttämättä.
Ei välttämättä? Pystyykö tuon jotenkin välttämään? Käyttääkö VCpp jotain omia kirjastojaan tms?
Kiitos Blaze.
Kyllä kai WC++:kin pystyy sentään kääntämään ihan standardia koodia, jota muutkin kääntäjät sietää.
Latasin tuossa MS Visual C++ Toolkitin ja tutkin hiukan cl.exen parametreja. Sanoisinkin, että jos haluat tehdä tuolla standardin mukaista koodia kannattaa käännökseen lisätä parametrit
/Za /Zc:forScope
joista ensinmäinen poistaa MS:n omat lisäykset ja toinen pakottaa muuttujien näkyvyyden C++ for-silmukoissa standardin mukaiseksi. Tällöin koodi todennäköisesti kääntyy jollain muullakin kääntäjällä ilman muutoksia.
Aihe on jo aika vanha, joten et voi enää vastata siihen.