Microsoft Visual C - Microsoft Visual C

Visual C ++
Udvikler (r) Microsoft
Første udgivelse Februar 1993 ; 28 år siden  ( 1993-02 )
Stabil frigivelse
14.26.28720.3
Skrevet i C ++
Operativ system Windows
Platform IA-32 , x86-64 og ARM
Tilgængelig i Engelsk, Kinesisk (forenklet og traditionel), tjekkisk, fransk, tysk, italiensk, japansk, koreansk, polsk, portugisisk (brasiliansk), russisk, spansk, tyrkisk
Type IDE
Licens Trialware og freeware
Internet side docs .microsoft .com / da-os / cpp /

Microsoft Visual C ++ (ofte forkortet til MSVC ) er en integreret udviklingsmiljø (IDE) produkt fra Microsoft for C , C ++ og C ++ / CLI programmeringssprog . MSVC er proprietær software ; det var oprindeligt et enkeltstående produkt, men blev senere en del af Visual Studio og gjort tilgængeligt i både trialware- og freeware- former. Den indeholder værktøjer til udvikling og fejlretning af C ++ - kode, især kode skrevet til Windows API , DirectX og .NET .

Mange applikationer kræver omfordelbare Visual C ++ - runtime-bibliotekspakker for at fungere korrekt. Disse pakker installeres ofte uafhængigt af applikationer, så flere applikationer kan bruge pakken, mens de kun behøver at installere den en gang. Disse Visual C ++ videredistribution og runtime pakker er for det meste installeret til standard biblioteker at mange applikationer bruger.

Historie

Forgjengeren til Visual C ++ blev kaldt Microsoft C / C ++ . Der var også en Microsoft QuickC 2.5 og en Microsoft QuickC til Windows 1.0. Visual C ++ - kompilatoren er stadig kendt som Microsoft C / C ++, og fra udgivelsen af ​​Visual C ++ 2015 Update 2 er den version 14.0.23918.0.

16-bit versioner

  • Microsoft C 1.0, baseret på Lattice C , var Microsofts første C-produkt i 1983. Det var ikke K & R C .
  • C 2.0 tilføjede stor model support.
  • C 3.0 var den første version, der blev udviklet i Microsoft. Denne version havde til hensigt kompatibilitet med K&R og den senere ANSI-standard. Det blev brugt i Microsoft (til Windows og Xenix- udvikling) i begyndelsen af ​​1984. Det blev sendt som et produkt i 1985.
  • C 4.0 tilføjede optimeringer og CodeView , en kildedebugger .
  • C 5.0 tilføjede loopoptimeringer og 'enorm hukommelsesmodel' ( arrays større end 64 KB) understøttes. Microsoft Fortran og den første 32-bit compiler til 80386 var også en del af dette projekt.
  • C 5.1 udgivet i 1988 tillod kompilering af programmer til OS / 2 1.x.
  • C 6.0 blev frigivet i 1989. Den tilføjede programmørens Workbench IDE, global flowanalyse, en kilde-browser og en ny debugger og inkluderede en valgfri C ++ frontend.
  • C / C ++ 7.0 blev frigivet i 1992. Tilføjet indbygget support til C ++ og MFC (Microsoft Foundation Class Library) 1.0. OS / 2-support blev droppet.
  • Visual C ++ 1.0, der inkluderede MFC 2.0, var den første version af 'Visual' C ++, der blev udgivet i februar 1993. Den var Cfront 2.1-kompatibel og tilgængelig i to udgaver:
    • Standard: erstattet QuickC til Windows.
    • Professionel: udskiftet C / C ++ 7.0. Inkluderet evnen til at opbygge både DOS og Windows-programmer, en optimerende compiler , en kilde profiler , og Windows 3.1 SDK. Den Phar Lap 286 DOS Extender Lite var også inkluderet.
  • Visual C ++ 1.5 blev frigivet i december 1993, inkluderede MFC 2.5 og tilføjede OLE 2.0 og ODBC- understøttelse til MFC. Det var den første version af Visual C ++, der kun kom på CD-ROM .
    • Visual C ++ 1.51 og 1.52 var tilgængelige som en del af en abonnementstjeneste.
    • Visual C ++ 1.52b svarer til 1.52, men inkluderer ikke Control Development Kit.
    • Visual C ++ 1.52c var en patched version af 1.5. Det er den sidste og uden tvivl mest populære udviklingsplatform til Microsoft Windows 3.x. Den er tilgængelig via Microsoft Developer Network .

Strengt 32-bit versioner

  • Visual C ++ 1.0 (originalt navn: Visual C ++ 32-bit Edition) var den første version til 32-bit udvikling til Intel 386- arkitekturen. Selvom den blev frigivet, da 16-bit version 1.5 var tilgængelig, inkluderede den ikke support til OLE2 og ODBC. Den var også tilgængelig i en pakke kaldet Visual C ++ 16/32-bit Suite, som inkluderede Visual C ++ 1.5.
  • Visual C ++ 2.0, som inkluderede MFC 3.0, var den første version, der kun var 32-bit. På mange måder var denne version forud for sin tid, da Windows 95 , der så kaldes "Chicago", endnu ikke blev frigivet, og Windows NT kun havde en lille markedsandel. Microsoft inkluderede og opdaterede Visual C ++ 1.5 som en del af 2.x-udgivelserne op til 2.1, som inkluderede Visual C ++ 1.52, og både 16-bit og 32-bit version af Control Development Kit (CDK) blev inkluderet. Visual C ++ 2.x understøttede også Win32s- udvikling. Den er tilgængelig via Microsoft Developer Network . Der var en Visual C ++ 2.0 RISC Edition til MIPS- og Alpha- processorer samt en platformudgave til Macintosh ( 68000 instruktions sæt).
    • Visual C ++ 2.1 og 2.2 var opdateringer til 2.0 tilgængelige via abonnement.
  • Visual C ++ 4.0, udgivet den 11/11 1995, introducerede Developer Studio IDE. Dens hidtil ukendte flisebelagte layout af ikke-overlappende paneler - navigationspanel, kombinationsredigerings- / kildeniveau-fejlfindingspanel og konsoludgangspanel - fortsætter gennem Visual Studio- produktlinjen (fra 2013). Visual C ++ 4.0 inkluderet MFC 4.0, blev designet til Windows 95 og Windows NT. For at muliggøre understøttelse af ældre (Windows 3.x / DOS) -projekter fulgte 4.0 bundtet med Visual C ++ 1.52 installations-cd. Opdateringer, der var tilgængelige via abonnement, omfattede Visual C ++ 4.1, der fulgte med Microsoft Game SDK (senere frigivet separat som DirectX SDK) og Visual C ++ 4.2. Version nummer 3.0 blev sprunget over for at opnå paritetsversion mellem Visual C ++ 4.0 og MFC 4.0.
  • Visual C ++ 4.2 understøttede ikke Windows 3.x ( Win32s ) udvikling. Dette var den endelige version med en platformudgave til Macintosh tilgængelig, og den adskilte sig fra 2.x-versionen, idet den også tillod kompilering til PowerPC- instruktionssættet.
  • Visual C ++ 5.0, som inkluderede MFC 4.21 og blev frigivet 1997-04-28, var en større opgradering fra 4.2. Fås i fire udgaver: Learning, Professional, Enterprise og RISC.
  • Visual C ++ 6.0 (almindeligvis kendt som VC6), som inkluderede MFC 6.0, blev udgivet i 1998. Udgivelsen var noget kontroversiel, da den ikke indeholdt en forventet opdatering til MFC. Visual C ++ 6.0 er stadig ret populær og bruges ofte til at opretholde ældre projekter. Der er dog problemer med denne version under Windows XP, især under fejlretningstilstand (for eksempel vises værdierne for statiske variabler ikke). Fejlfindingsproblemerne kan løses med et program kaldet "Visual C ++ 6.0 Processor Pack". Versionsnummer: 12.00.8804
  • Visual C ++ .NET 2002 (også kendt som Visual C ++ 7.0), som inkluderede MFC 7.0, blev frigivet i 2002 med understøttelse af linktidskodegenerering og fejlretning af runtime-kontrol, .NET 1.0 og Visual C # og Managed C ++ . Den nye brugergrænseflade brugte mange af genvejstasterne og konventionerne i Visual Basic , som tegnede sig for noget af dets upopularitet blandt C ++ - udviklere. Versionsnummer: 13.00.9466
  • Visual C ++ .NET 2003 (også kendt som Visual C ++ 7.1), som inkluderede MFC 7.1, blev frigivet i 2003 sammen med .NET 1.1 og var en større opgradering til Visual C ++ .NET 2002. Det blev betragtet som en patch til Visual C ++ .NET 2002. Følgelig blev den engelsksprogede opgraderingsversion af Visual Studio .NET 2003 sendt til minimale omkostninger til ejere af den engelsksprogede version af Visual Studio .NET 2002. Dette var den sidste version, der understøttede Windows 95 og NT 4.0 som et mål. Versionsnummer: 13.10.3077
  • eMbedded Visual C ++ i forskellige versioner blev brugt til at udvikle til nogle versioner af Windows CE- operativsystemet. Oprindeligt erstattede det et udviklingsmiljø bestående af værktøjer tilføjet til Visual C ++ 6.0. eMbedded Visual C ++ blev erstattet som et separat udviklingsmiljø af Microsoft Visual Studio 2005 .

32-bit og 64-bit versioner

  • Visual C ++ 2005 (også kendt som Visual C ++ 8.0), som inkluderede MFC 8.0, blev udgivet i november 2005. Denne version understøtter .NET 2.0 og inkluderer en ny version af C ++ målrettet mod. NET framework ( C ++ / CLI ) med det formål for at erstatte den tidligere version ( Managed C ++ ). Managed C ++ til CLI er dog stadig tilgængelig via kompilatorindstillinger. Det introducerede også OpenMP . Med Visual C ++ 2005 introducerede Microsoft også Team Foundation Server . Visual C ++ 8.0 har problemer med at kompilere MFC AppWizard-projekter, der blev oprettet ved hjælp af Visual Studio 6.0, så vedligeholdelse af ældre projekter kan fortsættes med den originale IDE, hvis omskrivning ikke er mulig. Visual C ++ 2005 er den sidste version, der er i stand til at målrette mod Windows 98 og Windows Me . SP1-version (14.00.50727.762) er også tilgængelig i Microsoft Windows SDK Update til Windows Vista .
  • Visual C ++ 2008 (også kendt som Visual C ++ 9.0) blev udgivet i november 2007. Denne version understøtter .NET 3.5. Managed C ++ for CLI er stadig tilgængelig via kompilatorindstillinger. Som standard fungerer alle applikationer, der er kompileret mod Visual C ++ 2008 Runtimes (statisk og dynamisk sammenkædning), kun under Windows 2000 og nyere. En funktionspakke frigivet til VC9, senere inkluderet i SP1, tilføjede understøttelse af C ++ TR1- biblioteksudvidelser. SP1-version (15.00.30729.01) er også tilgængelig i Microsoft Windows SDK til Windows 7 .
  • Nogle versioner af Visual C ++ understøttede Itanium 2 .
  • Visual C ++ 2010 (også kendt som Visual C ++ 10.0) blev frigivet den 12. april 2010. Den bruger en SQL Server Compact- database til at gemme oplysninger om kildekoden, herunder IntelliSense- information, for bedre IntelliSense og understøttelse af kodeudfyldning. Visual C ++ 2010 understøtter dog ikke Intellisense for C ++ / CLI. Denne version tilføjer et C ++ - parallelbibliotek kaldet Parallel Patterns Library , delvis understøttelse af C ++ 11 , forbedret IntelliSense væsentligt baseret på Edison Design Group frontend og ydeevne forbedringer til både compileren og den genererede kode. Denne version er bygget på .NET 4.0, men understøtter kompilering til maskinkode . Den delvise C ++ 11-understøttelse består hovedsageligt af seks kompilatorfunktioner: lambdas, rvalue-referencer, auto, decltype, static_assert og nullptr. C ++ 11 understøtter også biblioteksfunktioner (f.eks. Flytning af TR1-komponenter fra std :: tr1 navneområde direkte til std navneområde). Variadiske skabeloner blev også overvejet, men forsinket indtil en fremtidig version på grund af at have en lavere prioritet, hvilket stammede fra det faktum, at i modsætning til andre dyre at implementere funktioner (lambda, rvalue referencer), ville variadiske skabeloner kun gavne et mindretal af biblioteket forfattere snarere end flertallet af compiler-slutbrugere. Som standard fungerer alle applikationer, der er kompileret mod Visual C ++ 2010 Runtimes, kun på Windows XP SP2 og nyere. RTM-versionen (16.00.30319) er også tilgængelig i Windows SDK til Windows 7 og .NET Framework 4 (WinSDK v7.1). SP1-version (16.00.40219) er tilgængelig som en del af Visual Studio 2010 Service Pack 1 eller via Microsoft Visual C ++ 2010 Service Pack 1 Compiler Update til Windows SDK 7.1.
  • Visual C ++ 2012 (også kendt som Visual C ++ 11.0) blev udgivet den 15. august 2012. Den har forbedret C ++ 11 support og understøttelse af Windows Runtime- udvikling.
  • Visual C ++ 2013 (også kendt som Visual C ++ 12.0) blev udgivet den 17. oktober 2013. Den indeholder yderligere C ++ 11- og C99- understøttelse og introducerer en REST SDK.
  • Visual C ++ 2015 (også kendt som Visual C ++ 14.0) blev udgivet den 20. juli 2015. Den har forbedret C ++ 11/14/17-understøttelse. Uden nogen meddelelse fra Microsoft begyndte Visual Studio 2015 Update 2 at generere telemetriopkald i kompilerede binære filer. Efter at nogle brugere kontaktede Microsoft om dette problem, sagde Microsoft, at de ville fjerne disse telemetriopkald, når de kompilerede med den fremtidige Visual Studio 2015-opdatering 3. Den pågældende funktion blev fjernet fra Visual C ++ CRT-statiske biblioteker i Visual Studio 2015 Update 3.
  • Visual C ++ 2017 (også kendt som Visual C ++ 14.1) blev udgivet den 7. marts 2017.
  • Visual C ++ 2019 (også kendt som Visual C ++ 14.2) blev frigivet den 2. april 2019.

Intern version nummerering

Fra og med Microsoft C 6.0 _MSC_VER angiver den foruddefinerede makro hoved- og mindre versionnumre på Visual C ++ -kompilatoren. Makroværdien er et heltal bogstaveligt, hvor de sidste to cifre angiver det mindste versionsnummer, og de foregående cifre angiver det største versionnummer.

Fra Visual Studio 2017 _MSC_VER er øges monotont ved hver Visual C ++ værktøjssæt opdatering . Således indstilles for eksempel den version af MSVC ++ 14.11, der leveres med Visual Studio 2017 version 15.3.0 _MSC_VER til 1911 . Microsoft anbefaler, at du bruger >= operatøren til at teste værdien af _MSC_VER .

Her er værdier _MSC_VER for forskellige versioner af Visual C ++ - kompilatoren:

MSC    6.0   _MSC_VER == 600
MSC    7.0   _MSC_VER == 700
MSVC++ 1.0   _MSC_VER == 800
MSVC++ 2.0   _MSC_VER == 900
MSVC++ 4.0   _MSC_VER == 1000 (Developer Studio 4.0)
MSVC++ 4.2   _MSC_VER == 1020 (Developer Studio 4.2)
MSVC++ 5.0   _MSC_VER == 1100 (Visual Studio 97 version 5.0)
MSVC++ 6.0   _MSC_VER == 1200 (Visual Studio 6.0 version 6.0)
MSVC++ 7.0   _MSC_VER == 1300 (Visual Studio .NET 2002 version 7.0)
MSVC++ 7.1   _MSC_VER == 1310 (Visual Studio .NET 2003 version 7.1)
MSVC++ 8.0   _MSC_VER == 1400 (Visual Studio 2005 version 8.0)
MSVC++ 9.0   _MSC_VER == 1500 (Visual Studio 2008 version 9.0)
MSVC++ 10.0  _MSC_VER == 1600 (Visual Studio 2010 version 10.0)
MSVC++ 11.0  _MSC_VER == 1700 (Visual Studio 2012 version 11.0)
MSVC++ 12.0  _MSC_VER == 1800 (Visual Studio 2013 version 12.0)
MSVC++ 14.0  _MSC_VER == 1900 (Visual Studio 2015 version 14.0)
MSVC++ 14.1  _MSC_VER == 1910 (Visual Studio 2017 version 15.0)
MSVC++ 14.11 _MSC_VER == 1911 (Visual Studio 2017 version 15.3)
MSVC++ 14.12 _MSC_VER == 1912 (Visual Studio 2017 version 15.5)
MSVC++ 14.13 _MSC_VER == 1913 (Visual Studio 2017 version 15.6)
MSVC++ 14.14 _MSC_VER == 1914 (Visual Studio 2017 version 15.7)
MSVC++ 14.15 _MSC_VER == 1915 (Visual Studio 2017 version 15.8)
MSVC++ 14.16 _MSC_VER == 1916 (Visual Studio 2017 version 15.9)
MSVC++ 14.2  _MSC_VER == 1920 (Visual Studio 2019 Version 16.0)
MSVC++ 14.21 _MSC_VER == 1921 (Visual Studio 2019 Version 16.1)
MSVC++ 14.22 _MSC_VER == 1922 (Visual Studio 2019 Version 16.2)
MSVC++ 14.23 _MSC_VER == 1923 (Visual Studio 2019 Version 16.3)
MSVC++ 14.24 _MSC_VER == 1924 (Visual Studio 2019 Version 16.4)
MSVC++ 14.25 _MSC_VER == 1925 (Visual Studio 2019 Version 16.5)
MSVC++ 14.26 _MSC_VER == 1926 (Visual Studio 2019 Version 16.6)

Disse versionsnumre henviser til hovedversionen af ​​Visual C ++ - kompilatorer og biblioteker, som det fremgår af installationsmapperne. Det henviser ikke til året i navnet på Visual Studio-udgivelsen. En grundig liste er tilgængelig.

Kompatibilitet

ABI

Visual C ++ - kompilator ABI har historisk ændret sig mellem større compilerudgivelser. Dette er især tilfældet for STL-containere, hvor containerstørrelser har varieret meget mellem compilerudgivelser. Microsoft anbefaler derfor ikke at bruge C ++ - grænseflader ved modulgrænser, når man vil aktivere klientkode, der er kompileret ved hjælp af en anden compilerversion. I stedet for C ++ anbefaler Microsoft at bruge C- eller COM- grænseflader, som er designet til at have en stabil ABI mellem compiler-udgivelser.

Alle 14.x MSVC-udgivelser har en stabil ABI, og binære filer, der er bygget med disse versioner, kan blandes fremadkompatibelt og bemærker følgende begrænsninger:

  • Den anvendte værktøjssætversion skal være lig med eller højere end den højeste version af værktøjssættet, der bruges til at oprette tilknyttede binære filer.
  • MSVC Redistribuerbar version skal være lig med eller højere end den version af værktøjssættet, der bruges af en applikationskomponent.
  • Statiske biblioteker eller objektfiler kompileret med / GL (Hele programoptimering) er ikke binære kompatible mellem versioner og skal bruge nøjagtigt det samme værktøjssæt.

C runtime-biblioteker

Visual C ++ leveres med forskellige versioner af C-runtime-biblioteker. Dette betyder, at brugerne kan kompilere deres kode med et hvilket som helst af de tilgængelige biblioteker. Dette kan dog medføre nogle problemer, når du bruger forskellige komponenter ( DLL'er , EXE'er ) i det samme program. Et typisk eksempel er et program, der bruger forskellige biblioteker . Brugeren skal bruge den samme C-kørselstid for alle programmets komponenter, medmindre implikationerne forstås. Microsoft anbefaler, at du bruger det multitrådede , dynamiske linkbibliotek (/ MD eller / MDd-kompilatorindstilling) for at undgå mulige problemer.

C

Selvom produktet stammer fra en IDE til C- programmeringssproget, svarede kompilatorens support til dette sprog i mange år kun til den originale udgave af C-standarden , der dateres fra 1989, men ikke C99- revisionen af ​​standarden. Der havde ikke været nogen planer om at støtte C99 selv i 2011, mere end et årti efter offentliggørelsen.

Visual C ++ 2013 tilføjede endelig understøttelse af forskellige C99-funktioner i sin C-tilstand (inklusive udpegede initialiserere, sammensatte bogstaver og _Bool typen), selvom det stadig ikke var komplet. Visual C ++ 2015 forbedrede yderligere C99-understøttelsen med fuld understøttelse af C99 Standardbiblioteket, bortset fra funktioner, der kræver C99-sprogfunktioner, der endnu ikke understøttes af compileren.

De fleste af ændringerne fra C11- revisionen af ​​standarden understøttes stadig ikke af Visual C ++ 2017. For eksempel _Generic understøttes generiske valg via nøgleordet ikke af compileren og resulterer i en syntaksfejl.

"Fuld C11-overensstemmelse findes på vores køreplan, og opdatering af præprocessoren er kun det første trin i denne proces. C11 _Generic-funktionen er faktisk ikke en del af preprocessoren, så den er endnu ikke implementeret. Når den implementeres, forventer jeg, at funktionen fungerer uafhængig af, om den traditionelle eller opdaterede forprocessorlogik anvendes. "

Referencer

eksterne links