Microsoft Visual C ++ - Microsoft Visual C++

Visual C ++
Visual Studio Icon 2019.svg
Desenvolvedor (s) Microsoft
lançamento inicial Fevereiro de 1993 ; 28 anos atrás ( 1993-02 )
Versão estável
14.29.30133 / 27 de julho de 2021
Escrito em C ++
Sistema operacional janelas
Plataforma IA-32 , x86-64 e ARM
Disponível em Inglês, chinês (simplificado e tradicional), tcheco, francês, alemão, italiano, japonês, coreano, polonês, português (brasileiro), russo, espanhol, turco
Modelo IDE
Licença Trialware e freeware
Local na rede Internet docs .microsoft .com / en-us / cpp /

Microsoft Visual C ++ ( MSVC ) é um compilador para a C , C ++ e C ++ / CX linguagens de programação pela Microsoft . MSVC é um software proprietário ; era originalmente um produto autônomo, mas mais tarde tornou-se parte do Visual Studio e foi disponibilizado em versões de teste e freeware . Ele apresenta ferramentas para desenvolver e depurar código C ++, especialmente código escrito para a API do Windows , DirectX e .NET .

Muitos aplicativos requerem pacotes redistribuíveis da biblioteca de tempo de execução Visual C ++ para funcionar corretamente. Esses pacotes são frequentemente instalados independentemente dos aplicativos, permitindo que vários aplicativos façam uso do pacote, tendo apenas que instalá-lo uma vez. Esses pacotes redistribuíveis e de tempo de execução do Visual C ++ são principalmente instalados para bibliotecas padrão que muitos aplicativos usam.

História

O predecessor do Visual C ++ foi denominado Microsoft C / C ++ . Havia também um Microsoft QuickC 2.5 e um Microsoft QuickC para Windows 1.0. O compilador Visual C ++ ainda é conhecido como Microsoft C / C ++ e, a partir do lançamento do Visual C ++ 2015 Atualização 2, está na versão 14.0.23918.0.

Versões de 16 bits

  • Microsoft C 1.0, baseado em Malha C , foi o primeiro produto da Microsoft C em 1983. Não foi K & R C .
  • C 2.0 adicionou suporte a modelos grandes.
  • C 3.0 foi a primeira versão desenvolvida dentro da Microsoft. Esta versão pretendia compatibilidade com K&R e o padrão ANSI posterior. Ele estava sendo usado dentro da Microsoft (para desenvolvimento do Windows e Xenix ) no início de 1984. Ele foi lançado como um produto em 1985.
  • C 4.0 adicionou otimizações e CodeView , um depurador de nível de origem.
  • C 5.0 adicionou otimizações de loop e suporte a 'modelo de memória enorme' ( matrizes maiores que 64 KB). O Microsoft Fortran e o primeiro compilador de 32 bits para 80386 também fizeram parte deste projeto.
  • C 5.1 lançado em 1988 permitiu a compilação de programas para OS / 2 1.x.
  • C 6.0 lançado em 1989. Ele adicionou o IDE do Programmer's Workbench , análise de fluxo global, um navegador de código-fonte e um novo depurador, e incluiu um front-end C ++ opcional .
  • C / C ++ 7.0 foi lançado em 1992. Adicionado suporte integrado para C ++ e MFC (Microsoft Foundation Class Library) 1.0.
  • O Visual C ++ 1.0, que incluía o MFC 2.0, foi a primeira versão do 'Visual' C ++, lançado em fevereiro de 1993. Era compatível com o Cfront 2.1 e estava disponível em duas edições:
    • Padrão: substituiu QuickC para Windows.
    • Profissional: substituído C / C ++ 7.0. Inclui a capacidade de criar aplicativos DOS e Windows, um compilador de otimização , um criador de perfil de origem e o SDK do Windows 3.1. O Phar Lap 286 DOS Extender Lite também foi incluído.
  • O Visual C ++ 1.5 foi lançado em dezembro de 1993, incluiu o MFC 2.5 e adicionou suporte para OLE 2.0 e ODBC ao MFC. Foi a primeira versão do Visual C ++ que veio apenas em CD-ROM .
    • O Visual C ++ 1.51 e 1.52 estavam disponíveis como parte de um serviço de assinatura.
    • Visual C ++ 1.52b é semelhante a 1.52, mas não inclui o Kit de desenvolvimento de controle.
    • O Visual C ++ 1.52c era uma versão corrigida do 1.5. É a última e provavelmente a mais popular plataforma de desenvolvimento do Microsoft Windows 3.x. Ele está disponível por meio da Microsoft Developer Network .

Versões estritamente de 32 bits

  • Visual C ++ 1.0 (nome original: Visual C ++ 32-bit Edition) foi a primeira versão para desenvolvimento de 32 bits para a arquitetura Intel 386 . Embora lançado quando a versão 1.5 de 16 bits estava disponível, não incluía suporte para OLE2 e ODBC. Ele também estava disponível em um pacote chamado Visual C ++ 16/32-bit Suite, que incluía o Visual C ++ 1.5.
  • O Visual C ++ 2.0, que incluiu o MFC 3.0, foi a primeira versão de apenas 32 bits. Em muitos aspectos, essa versão estava à frente de seu tempo, uma vez que o Windows 95 , então com o codinome "Chicago", ainda não havia sido lançado e o Windows NT tinha apenas uma pequena participação de mercado. A Microsoft incluiu e atualizou o Visual C ++ 1.5 como parte das versões 2.x até 2.1, que incluía o Visual C ++ 1.52, e as versões de 16 e 32 bits do Control Development Kit (CDK) foram incluídas. O Visual C ++ 2.x também oferece suporte ao desenvolvimento do Win32s . Ele está disponível por meio da Microsoft Developer Network . Havia um Visual C ++ 2.0 RISC Edition para processadores MIPS e Alpha , bem como uma edição de plataforma cruzada para o Macintosh ( conjunto de instruções 68000 ).
    • Visual C ++ 2.1 e 2.2 eram atualizações para 2.0 disponíveis por meio de assinatura.
  • O Visual C ++ 4.0, lançado em 11/12/1995, apresentou o IDE Developer Studio. Seu então novo layout lado a lado de painéis não sobrepostos - painel de navegação, combinação de editor / painel depurador de nível de origem e painel de saída do console - continua através da linha de produtos Visual Studio (a partir de 2019). Visual C ++ 4.0 incluído MFC 4.0, foi projetado para Windows 95 e Windows NT. Para permitir o suporte de projetos herdados (Windows 3.x / DOS), o 4.0 veio junto com o CD de instalação do Visual C ++ 1.52. As atualizações disponíveis por meio de assinatura incluem Visual C ++ 4.1, que acompanha o Microsoft Game SDK (posteriormente lançado separadamente como DirectX SDK), e Visual C ++ 4.2. O número da versão 3.0 foi ignorado para atingir a paridade do número da versão entre o Visual C ++ 4.0 e o MFC 4.0.
  • O Visual C ++ 4.2 não dava suporte ao desenvolvimento do Windows 3.x ( Win32s ). Esta era a versão final com uma edição multiplataforma disponível para Macintosh e diferia da versão 2.x por também permitir a compilação para o conjunto de instruções PowerPC .
  • O Visual C ++ 5.0, que incluía o MFC 4.21 e foi lançado em 28/04/1997, foi uma atualização importante do 4.2. Disponível em quatro edições: Learning, Professional, Enterprise e RISC.
  • O Visual C ++ 6.0 (comumente conhecido como VC6), que incluía o MFC 6.0, foi lançado em 1998. O lançamento era um tanto controverso, pois não incluía uma atualização esperada para o MFC. Visual C ++ 6.0 ainda é bastante popular e freqüentemente usado para manter projetos herdados. No entanto, existem problemas com esta versão no Windows XP, especialmente no modo de depuração (por exemplo, os valores das variáveis ​​estáticas não são exibidos). Os problemas de depuração podem ser resolvidos com um patch denominado "Visual C ++ 6.0 Processor Pack". Número da versão: 12.00.8804
  • O Visual C ++ .NET 2002 (também conhecido como Visual C ++ 7.0), que incluía o MFC 7.0, foi lançado em 2002 com suporte para geração de código de tempo de link e verificações de tempo de execução de depuração, .NET 1.0 e Visual C # e C ++ gerenciado . A nova interface do usuário usava muitas das teclas de atalho e convenções do Visual Basic , o que explicava sua impopularidade entre os desenvolvedores de C ++. Número da versão: 13.00.9466
  • O Visual C ++ .NET 2003 (também conhecido como Visual C ++ 7.1), que incluía o MFC 7.1, foi lançado em 2003 junto com o .NET 1.1 e foi uma grande atualização do Visual C ++ .NET 2002. Foi considerado um patch para o Visual C ++ .NET 2002. Conseqüentemente, a versão de atualização em inglês do Visual Studio .NET 2003 foi enviada com custo mínimo aos proprietários da versão em inglês do Visual Studio .NET 2002. Esta foi a última versão a oferecer suporte ao Windows 95 e NT 4.0 como destino. Número da versão: 13.10.3077
  • O eMbedded Visual C ++ em várias versões foi usado para desenvolver algumas versões do sistema operacional Windows CE . Inicialmente, ele substituiu um ambiente de desenvolvimento que consistia em ferramentas adicionadas ao Visual C ++ 6.0. O eMbedded Visual C ++ foi substituído como um ambiente de desenvolvimento separado pelo Microsoft Visual Studio 2005 .

Versões de 32 bits e 64 bits

  • O Visual C ++ 2005 (também conhecido como Visual C ++ 8.0), que incluía o MFC 8.0, foi lançado em novembro de 2005. Esta versão oferece suporte ao .NET 2.0 e inclui uma nova versão do C ++ voltada para o framework .NET ( C ++ / CLI ) com a finalidade de substituir a versão anterior ( Managed C ++ ). No entanto, o C ++ gerenciado para CLI ainda está disponível por meio das opções do compilador. Ele também introduziu o OpenMP . Com o Visual C ++ 2005, a Microsoft também introduziu o Team Foundation Server . O Visual C ++ 8.0 tem problemas para compilar projetos MFC AppWizard que foram criados usando o Visual Studio 6.0, portanto, a manutenção de projetos herdados pode ser continuada com o IDE original se a reescrita não for viável. Visual C ++ 2005 é a última versão capaz de direcionar o Windows 98 e Windows Me . A versão SP1 (14.00.50727.762) também está disponível no Microsoft Windows SDK Update para Windows Vista .
  • O Visual C ++ 2008 (também conhecido como Visual C ++ 9.0) foi lançado em novembro de 2007. Esta versão oferece suporte ao .NET 3.5. O C ++ gerenciado para CLI ainda está disponível por meio das opções do compilador. Por padrão, todos os aplicativos compilados em relação aos tempos de execução do Visual C ++ 2008 (vinculação estática e dinâmica) funcionarão apenas no Windows 2000 e posterior. Um feature pack lançado para VC9, posteriormente incluído no SP1, adicionou suporte para extensões de biblioteca C ++ TR1 . A versão SP1 (15.00.30729.01) também está disponível no Microsoft Windows SDK para Windows 7 .
  • Algumas versões do Visual C ++ suportavam Itanium 2 .
  • O Visual C ++ 2010 (também conhecido como Visual C ++ 10.0) foi lançado em 12 de abril de 2010. Ele usa um banco de dados SQL Server Compact para armazenar informações sobre o código-fonte, incluindo informações do IntelliSense , para melhor suporte ao IntelliSense e ao preenchimento de código. No entanto, Visual C ++ 2010 não oferece suporte a Intellisense para C ++ / CLI. Esta versão adiciona uma biblioteca de computação paralela C ++ chamada Parallel Patterns Library , suporte parcial para C ++ 11 , IntelliSense significativamente aprimorado com base no front end do Edison Design Group e melhorias de desempenho para o compilador e o código gerado. Esta versão é construída em .NET 4.0, mas oferece suporte à compilação para código de máquina . O suporte parcial ao C ++ 11 consiste principalmente em seis recursos do compilador: lambdas, referências rvalue, auto, decltype, static_assert e nullptr. C ++ 11 também oferece suporte a recursos de biblioteca (por exemplo, mover os componentes TR1 do namespace std :: tr1 diretamente para o namespace std). Os modelos variáveis também foram considerados, mas adiados até alguma versão futura devido a ter uma prioridade mais baixa, que resultou do fato de que, ao contrário de outros recursos caros de implementar (referências lambda, rvalue), os modelos variados beneficiariam apenas uma minoria da biblioteca escritores em vez da maioria dos usuários finais do compilador. Por padrão, todos os aplicativos compilados nos tempos de execução do Visual C ++ 2010 funcionam apenas no Windows XP SP2 e posterior. A versão RTM (16.00.30319) também está disponível no Windows SDK para Windows 7 e .NET Framework 4 (WinSDK v7.1). A versão SP1 (16.00.40219) está disponível como parte do Visual Studio 2010 Service Pack 1 ou por meio da Atualização do Compilador do Microsoft Visual C ++ 2010 Service Pack 1 para o Windows SDK 7.1.
  • O Visual C ++ 2012 (também conhecido como Visual C ++ 11.0) foi lançado em 15 de agosto de 2012. Ele apresenta suporte aprimorado para C ++ 11 e suporte para desenvolvimento do Windows Runtime .
  • O Visual C ++ 2013 (também conhecido como Visual C ++ 12.0) foi lançado em 17 de outubro de 2013. Ele oferece suporte adicional para C ++ 11 e C99 e apresenta um REST SDK.
  • O Visual C ++ 2015 (também conhecido como Visual C ++ 14.0) foi lançado em 20 de julho de 2015. Ele apresenta suporte aprimorado para C ++ 11/14/17. Sem qualquer anúncio da Microsoft, o Visual Studio 2015 Update 2 começou a gerar chamadas de telemetria em binários compilados. Depois que alguns usuários entraram em contato com a Microsoft sobre esse problema, a Microsoft disse que removeria essas chamadas de telemetria ao compilar com a futura atualização 3 do Visual Studio 2015. A função em questão foi removida das bibliotecas estáticas do Visual C ++ CRT na atualização 3 do Visual Studio 2015.
  • O Visual C ++ 2017 (também conhecido como Visual C ++ 14.1) foi lançado em 7 de março de 2017.
  • O Visual C ++ 2019 (também conhecido como Visual C ++ 14.2) foi lançado em 2 de abril de 2019.

Numeração de versão interna

A macro predefinida _MSC_VERindica os números de versão principais e secundários do compilador Visual C ++. O valor da macro é um literal inteiro em que os dois últimos dígitos indicam o número da versão secundária e os dígitos anteriores indicam o número da versão principal.

A partir do Visual Studio 2017, _MSC_VERé incrementado monotonicamente a cada atualização do conjunto de ferramentas do Visual C ++ . Assim, por exemplo, a versão de | 14.11 que vem com o Visual Studio 2017 versão 15.3.0 definido _MSC_VERcomo 1911. A Microsoft recomenda usar o >=operador para testar o valor de _MSC_VER.

Aqui estão os valores de _MSC_VERpara várias versões do Visual C ++:

Versões MSC
Versão MSC _MSC_VER
1.0 100
2.0 200
3,0 300
4,0 400
5.0 500
6,0 600
7,0 700
Versões MSVC ++
Versão MSVC ++ _MSC_VER
1.0 800
2.0 900
4,0 1000 (Developer Studio 4.0)
4,2 1020 (Developer Studio 4.2)
5.0 1100 (Visual Studio 5.0)
6,0 1200 (Visual Studio 6.0)
7,0 1300 (Visual Studio 2002 7.0)
7,1 1310 (Visual Studio 2003 7.1)
8,0 1400 (Visual Studio 2005 8.0)
9,0 1500 (Visual Studio 2008 9.0)
10,0 1600 (Visual Studio 2010 10.0)
11,0 1700 (Visual Studio 2012 11.0)
12,0 1800 (Visual Studio 2013 12.0)
14,0 1900 (Visual Studio 2015 14.0)
14,1 1910 (Visual Studio 2017 15.0)
14,11 1911 (Visual Studio 2017 15.3)
14,12 1912 (Visual Studio 2017 15.5)
14,13 1913 (Visual Studio 2017 versão 15.6)
14,14 1914 (Visual Studio 2017 versão 15.7)
14,15 1915 (Visual Studio 2017 versão 15.8)
14,16 1916 (Visual Studio 2017 versão 15.9)
14,2 1920 (Visual Studio 2019 versão 16.0)
14,21 1921 (Visual Studio 2019 versão 16.1)
14,22 1922 (Visual Studio 2019 versão 16.2)
14,23 1923 (Visual Studio 2019 versão 16.3)
14,24 1924 (Visual Studio 2019 versão 16.4)
14,25 1925 (Visual Studio 2019 versão 16.5)
14,26 1926 (Visual Studio 2019 versão 16.6)
14,27 1927 (Visual Studio 2019 versão 16.7)
14,28 1928 (Visual Studio 2019 versão 16.8 + 16.9)
14,29 1929 (Visual Studio 2019 versão 16.10 + 16.11)


Esses números de versão referem-se ao número da versão principal dos compiladores e bibliotecas do Visual C ++, conforme pode ser visto nos diretórios de instalação. Não se refere ao ano no nome da versão do Visual Studio. Uma lista completa está disponível.

Observe que a versão executável do compilador C ++ corresponde _MSC_VERe é diferente da versão do produto Visual C ++ como um todo. Por exemplo, o cl.exe incluído em 14.22 (Visual Studio 2019 16.2.5) relata sua versão como 19.22.27905 se executado sem argumentos.

Também existe um _MSC_FULL_VERvalor, definido desde 1200, para informações extras sobre o número da compilação.

Compatibilidade

ABI

A ABI do compilador Visual C ++ mudou historicamente entre os principais lançamentos do compilador. Esse é especialmente o caso dos contêineres STL, onde os tamanhos dos contêineres variam muito entre as versões do compilador. Portanto, a Microsoft não recomenda o uso de interfaces C ++ nos limites do módulo quando se deseja habilitar o código do cliente compilado usando uma versão diferente do compilador. Em vez de C ++, a Microsoft recomenda o uso de interfaces C ou COM , que são projetadas para ter uma ABI estável entre as versões do compilador.

Todas as versões 14.x MSVC têm uma ABI estável, e os binários construídos com essas versões podem ser misturados de maneira compatível com versões futuras, observando as seguintes restrições:

  • A versão do conjunto de ferramentas usada deve ser igual ou superior à versão mais alta do conjunto de ferramentas usada para construir quaisquer binários vinculados.
  • A versão redistribuível do MSVC deve ser igual ou superior à versão do conjunto de ferramentas usada por qualquer componente do aplicativo.
  • Bibliotecas estáticas ou arquivos de objeto compilados com / GL (Otimização do programa inteiro) não são binários compatíveis entre as versões e devem usar exatamente o mesmo conjunto de ferramentas.

Bibliotecas de tempo de execução C

Visual C ++ vem com diferentes versões de bibliotecas de tempo de execução C. Isso significa que os usuários podem compilar seu código com qualquer uma das bibliotecas disponíveis. No entanto, isso pode causar alguns problemas ao usar componentes diferentes ( DLLs , EXEs ) no mesmo programa. Um exemplo típico é um programa que usa diferentes bibliotecas . O usuário deve usar o mesmo C Run-Time para todos os componentes do programa, a menos que as implicações sejam compreendidas. A Microsoft recomenda o uso da biblioteca de vínculo dinâmico multithread (opção de compilador / MD ou / MDd) para evitar possíveis problemas.

POSIX

Embora o CRT da Microsoft implemente um grande subconjunto de interfaces POSIX , o compilador Visual C ++ emitirá um aviso em cada uso de tais funções por padrão. A justificativa é que os padrões C e C ++ requerem um prefixo de sublinhado antes das interfaces definidas pela implementação, portanto, o uso dessas funções não é padrão. No entanto, os sistemas que são realmente compatíveis com POSIX não aceitariam esses nomes sublinhados e é mais portátil apenas desligar o aviso.

C

Embora o produto tenha se originado como um IDE para a linguagem de programação C , por muitos anos o suporte do compilador para essa linguagem obedeceu apenas à edição original do padrão C , datada de 1989, mas não à revisão C99 do padrão. Não havia planos para apoiar o C99 mesmo em 2011, mais de uma década após sua publicação.

O Visual C ++ 2013 finalmente adicionou suporte para vários recursos C99 em seu modo C (incluindo inicializadores designados, literais compostos e o _Booltipo), embora ainda não estivesse completo. O Visual C ++ 2015 melhorou ainda mais o suporte a C99, com suporte total da C99 Standard Library, exceto para recursos que exigem recursos da linguagem C99 ainda não suportados pelo compilador.

A maioria das alterações da revisão C11 do padrão ainda não é suportada pelo Visual C ++ 2017. Por exemplo, seleções genéricas por meio da _Genericpalavra - chave não são suportadas pelo compilador e resultam em um erro de sintaxe.

O pré-processador foi revisado em 2018, com C11 à vista:

A conformidade total com o C11 está em nosso roteiro e atualizar o pré-processador é apenas a primeira etapa desse processo. O _Genericrecurso C11 não faz realmente parte do pré-processador, então ainda não foi implementado. Quando implementado, espero que o recurso funcione independentemente se a lógica do pré-processador tradicional ou atualizada for usada.

_Generic o suporte foi comprometido com a MSVC em fevereiro de 2020, não se sabe quando será lançado.

Em setembro de 2020, a Microsoft anunciou o suporte aos padrões C11 e C17 no MSVC.

Referências

Leitura adicional

links externos