Rodrigo Strauss :: Blog
Aos coitados que ainda precisam usar Visual C++ 6.0 (inclusive eu)
Seguindo a série de otimização de performance e meu post sobre o otimizador do Visual C++ 7.1, eu resolvi tentar compilar o parser usando o Visual C++ 6.0 Service Pack 5, para fazer uma comparação com o VC7.1. Sim, TENTAR é o termo exato. Apesar de alguns dizerem o que Visual C++ 6 suporta Boost, isso não é bem verdade, não é a primeira vez que eu tenho problemas tentando fazer o Boost compilar no Visual C++ 6.0. Olha só o que eu consegui com minha tentativa:
--------------------Configuration: spidl_vc6 - Win32 Debug--------------------
Compiling...
StdAfx.cpp
stlport\stl\_alloc.h(354) : fatal error C1001: INTERNAL COMPILER ERROR
(compiler file 'msc1.cpp', line 1794)
Please choose the Technical Support command on the Visual C++
Help menu, or open the Technical Support help file for more information
Error executing cl.exe.
spidl_vc6.exe - 1 error(s), 0 warning(s)
Pode parecer um erro da STLPort, mas eu uso a STLPort em vários projetos VC6 e não tenho problemas. O problema real é que o Boost (que eu uso no parser) é muita areia para o caminhãozinho do VC6.
A empresa onde eu trabalho ainda usa Visual C++ 6.0, assim como muitas outras. Não é o nosso caso, mas eu já reparei que muitas empresas ainda usam esse compilador velho, desatualizado e fora do padrão por causa da confusão que a Microsoft fez colocando .NET em tudo que existia - tanto que o próximo Visual Studio será "Visual Studio 2005", sem o .NERD no final. Muita gente acha que o Visual Studio.NET é uma suite de ferramentas para desenvolver somente aplicações .NET. Se faz necessário explicar claramente e em letras garrafais:
O Visual C++ 6.0 é MUITO velho, foi lançado em 1998, antes mesmo do padrão C++ ISO ter sido finalizado.
O Visual Studio.NET 2003 contém o Visual C++ 7.1, que é o último compilador C++ lançado pela Microsoft. Ele tem uma ótima conformidade com o padrão ISO e tem um otimizador muito bom. Usando o Visual C++ 7.1 seus programas não virarão .NET, serão 100% nativos. O Visual C++ 7.1 (que, novamente, vem junto com o "Visual Studio.NET 2003") importa seus projetos Visual C++ 6.0 sem maiores problemas. Na versão 7.1, tanto a MFC quanto a ATL foram bastante melhoradas, e vale a pena fazer o upgrade. O Windows XP SP2 e o Windows Server 2003 são compilados usando o Visual C++ 7.1, o mesmo que você recebe no Visual Studio.NET 2003.
O Visual C++ 7.1 (lembre-se, ele é parte do "Visual Studio.NET 2003") tem um flag (/clr) para compilar Managed C++ (o binding C++ para .NET), mas ele é opcional (afinal, é um flag). Usando o Visual C++ 7.1 você continuará gerenciando sua própria memória, aumentará sua produtividade (se você acha que C++ não é produtivo é porque você nunca usou), já que terá um compilador padrão ISO, e poderá usar Boost, Loki, ATL7, MFC7, etc. Ah, e além disso, você continuará fazendo programas muito mais rápidos do que seus amiguinhos do garbage collector... :-)
Em 01/09/2005 19:39, por Rodrigo Strauss





Estamos há muito tempo tentando migrar para o VC7. Entretanto, criamos aplicativos que precisam ser muito pequenos (componentes Activex), e linkamos tudo com o Msvcrt.dll (Opção MultiThreaded DLL), que estah presente na maioria dos sistemas operacionais. No VC7, o equivalente desta opção deixa uma dependencia com o Msvcrt7.dll, que não vem instalado por padrão nos Windows (especialmente 9x e <= W2000). Em muitos casos nossos, o VC6 gera código menor que o do VC7 (talvez ateh porque o VC6 não gere código tão otimizado pra velocidade).
Abracos,
Rafael
PS.: Excelente seu blog.