# Visual C++

Visual C++ est un environnement de développement intégré pour Windows, conçu par Microsoft pour les langages de programmation C et C++ et intégrant différents outils pour développer, compiler, déboguer un programme en C++ s'exécutant sur Windows, ainsi que des bibliothèques comme les MFC.
Il a par la suite été intégré au framework Visual Studio, qui constitue ainsi un cadre unique aux divers environnements de développements de Microsoft. Le terme de Visual C++ est toutefois toujours employé pour désigner l'ensemble constitué par Visual Studio configuré pour C et C++.

## Historique

Le prédécesseur de Visual C++ était appelé Microsoft C/C++. Deux autres versions existaient : Microsoft QuickC 2.5 et Microsoft QuickC for Windows 1.0.

### Version 16 bits

* Microsoft C 1.0, basé sur le compilateur Lattice C, était le premier compilateur C en 1983. Il ne respectait pas le dialecte K&R C.
* C 2.0 ajoute le support des modèles larges.
* C 3.0 fut la première version à être développé en interne par Microsoft et a été livrée en 1985. Cette version est compatible avec le dialecte K&R et plus tard, le standard ANSI. Début 1984, elle a été utilisée en interne pour le développement de Windows et Xenix.
* C 4.0 ajoute des optimisations et CodeView, un débogueur pour le code source.
* C 5.0 ajoute l'optimisation de boucle et le support des modèles énormes (tableaux supportant une taille supérieure à 64 Ko). Microsoft Fortran est le premier compilateur 32 bits pour le processeur 80386 prennent part au projet.
* C 5.1 est sortie en 1988 et autorise la compilation de programme OS/2 1.x.
* C 6.0 est sortie en 1989. Cette version ajoute l'analyse globale des flux, l'explorateur de code source, un nouveau débogueur et inclut une version optionnelle de C++ pour front-end.
* C/C++ 7.0 est sortie en 1992. Il ajoute le support C++ et MFC 1.0.
* Visual C++ 1.0, première version de Visual C++, est sortie en février 1993. Elle inclut la deuxième version de MFC et propose une conformité avec le compilateur Cfront 2.1. Cette version est proposée en deux éditions :
** Standard, remplaçant de QuickC for Windows.
** Professionnel, remplaçant C/C++ 7.0. Elle ajoute la possibilité de créer des applications DOS et Windows, un compilateur optimisé, un profilage de code et le SDK de Windows 3.1. Le programme Phar Lap 286 DOS Extender Lite y est inclus.
* Visual C++ 1.5 est sortie en décembre 1993 et apporte le support de la version 2.5 de MFC, l'ajout d'OLE 2.0 et le support de ODBC à MFC. Il s'agit de la première version à être disponible uniquement sur CD-ROM.
** Visual C++ 1.51 et 1.52 sont disponibles dans le cadre d'un abonnement.
** Visual C++ 1.52b est similaire à la version 1.52, mais n'inclut pas le kit de développement de contrôle.
** Visual C++ 1.52c est un correctif destiné à la version 1.5 qui est disponible sur Microsoft Developer Network. Il s'agit de la dernière (et de la plus populaire) plate-forme de développement pour Windows 3.x.

### Versions 32 bits

* Visual C++ 1.0 (ou Visual C++ 32 bits Édition) est la première version pour le développement 32 bits. Cette version ne prend pas en charge l'OLE 2 et ODBC. Elle a été disponible dans un ensemble nommé Visual C++ 16/32 bits Suite, qui comprenait également Visual C++ 1.5.
* Visual C++ 2.0 inclut la troisième version de MFC et elle est la première version uniquement en 32 bits.
** Visual C++ 2.1 et 2.2
* Visual C++ 4.0
* Visual C++ 4.2
* Visual C++ 5.0
* Visual C++ 6.0
* Visual C++ NET 2002
* Visual C++ NET 2003
* eMbedded Visual C++

### Versions 32 bits & 64 bits

* Visual C++ 2005 (MSVC++ 8.0)
* Visual C++ 2008 (MSVC++ 9.0)
* Visual C++ 2010 (MSVC++ 10.0)
* Visual C++ 2012 (MSVC++ 11.0)
* Visual C++ 2013 (MSVC++ 12.0)
* Visual C++ 2015 (MSVC++ 14.0)
* Visual C++ 2017 (MSVC++ 14.1)
* Visual C++ 2019 (MSVC++ 14.2)
* Visual C++ 2022 (MSVC++ 14.3)

## Compatibilité
### ABI

Le compilateur ABI de Visual C++ a changé historiquement entre les sorties majeures. C'est particulièrement le cas pour les conteneurs STL, où la taille des conteneurs est variée entre les sorties des compilateurs. Microsoft recommande de ne pas utiliser les interfaces C++ aux limites de module quand on veut activer le code client compilé en utilisant une version différente du compilateur. Microsoft recommande donc de ne pas utiliser d'interfaces C++ au niveau des limites de module lorsque l'on veut permettre à un code client compilé en utilisant une version différente du compilateur. Au lieu d'utiliser le langage C++, Microsoft recommande l'utilisation du langage C ou interfaces COM, qui sont conçus pour avoir une ABI stable entre les différentes versions du compilateur.