Microsoft visual c - Microsoft Visual C

Visual C ++
Développeur (s) Microsoft
Première version Février 1993 ; Il y a 28 ans  ( 1993-02 )
Version stable
14.26.28720.3
Écrit en C ++
Système opérateur les fenêtres
Plate-forme IA-32 , x86-64 et ARM
Disponible en Anglais, chinois (simplifié et traditionnel), tchèque, français, allemand, italien, japonais, coréen, polonais, portugais (brésilien), russe, espagnol, turc
Taper IDE
Licence Logiciels d'essai et logiciels gratuits
Site Internet docs .microsoft .com / fr-fr / cpp /

Microsoft Visual C ++ (souvent abrégé MSVC ) est un environnement de développement intégré des produits (IDE) de Microsoft pour les C , C ++ et C ++ / CLI langages de programmation . MSVC est un logiciel propriétaire ; il s'agissait à l'origine d'un produit autonome, mais il est ensuite devenu une partie de Visual Studio et mis à disposition sous forme de version d' essai et de logiciel gratuit . Il propose des outils pour développer et déboguer du code C ++, en particulier du code écrit pour l' API Windows , DirectX et .NET .

De nombreuses applications nécessitent des packages de bibliothèque d'exécution Visual C ++ redistribuables pour fonctionner correctement. Ces packages sont souvent installés indépendamment des applications, ce qui permet à plusieurs applications d'utiliser le package tout en n'ayant à l'installer qu'une seule fois. Ces packages redistribuables et d'exécution Visual C ++ sont principalement installés pour les bibliothèques standard utilisées par de nombreuses applications.

L'histoire

Le prédécesseur de Visual C ++ s'appelait Microsoft C / C ++ . Il y avait aussi un Microsoft QuickC 2.5 et un Microsoft QuickC pour Windows 1.0. Le compilateur Visual C ++ est toujours connu sous le nom de Microsoft C / C ++ et, à compter de la publication de Visual C ++ 2015 Update 2, est sur la version 14.0.23918.0.

Versions 16 bits

  • Microsoft C 1.0, basé sur Lattice C , a été le premier produit de Microsoft C en 1983. Il n'a pas été K & R C .
  • C 2.0 a ajouté la prise en charge des grands modèles.
  • C 3.0 était la première version développée au sein de Microsoft. Cette version était compatible avec K&R et la dernière norme ANSI. Il a été utilisé dans Microsoft (pour le développement Windows et Xenix ) au début de 1984. Il a été livré en tant que produit en 1985.
  • C 4.0 a ajouté des optimisations et CodeView , un débogueur au niveau de la source.
  • C 5.0 a ajouté des optimisations de boucle et une prise en charge du «modèle de mémoire énorme» ( tableaux de plus de 64 Ko). Microsoft Fortran et le premier compilateur 32 bits pour 80386 faisaient également partie de ce projet.
  • C 5.1 publié en 1988 permettait de compiler des programmes pour OS / 2 1.x.
  • C 6.0 est sorti en 1989. Il a ajouté l' IDE Programmer's Workbench , une analyse de flux global, un navigateur source et un nouveau débogueur, et a inclus un frontal C ++ facultatif .
  • C / C ++ 7.0 a été publié en 1992. Ajout de la prise en charge intégrée de C ++ et MFC (Microsoft Foundation Class Library) 1.0. Le support OS / 2 a été abandonné.
  • Visual C ++ 1.0, qui incluait MFC 2.0, était la première version de «Visual» C ++, publiée en février 1993. Il était compatible Cfront 2.1 et disponible en deux éditions:
    • Standard: remplacement de QuickC pour Windows.
    • Professionnel: remplacé C / C ++ 7.0. Inclus la possibilité de créer des applications DOS et Windows, un compilateur d'optimisation , un profileur source et le SDK Windows 3.1. Le Phar Lap 286 DOS Extender Lite était également inclus.
  • Visual C ++ 1.5 a été publié en décembre 1993, inclus MFC 2.5 et a ajouté la prise en charge OLE 2.0 et ODBC à MFC. C'était la première version de Visual C ++ disponible uniquement sur CD-ROM .
    • Visual C ++ 1.51 et 1.52 étaient disponibles dans le cadre d'un service d'abonnement.
    • Visual C ++ 1.52b est similaire à 1.52, mais n'inclut pas le Kit de développement de contrôle.
    • Visual C ++ 1.52c était une version corrigée de 1.5. Il s'agit de la dernière plate-forme de développement, et sans doute la plus populaire, pour Microsoft Windows 3.x. Il est disponible via Microsoft Developer Network .

Versions strictement 32 bits

  • Visual C ++ 1.0 (nom d'origine: Visual C ++ 32 bits Edition) était la première version pour le développement 32 bits pour l' architecture Intel 386 . Bien que publié lorsque la version 16 bits 1.5 était disponible, il n'incluait pas la prise en charge d'OLE2 et ODBC. Il était également disponible dans un ensemble appelé Visual C ++ 16/32 bits Suite, qui incluait Visual C ++ 1.5.
  • Visual C ++ 2.0, qui incluait MFC 3.0, était la première version 32 bits uniquement. À bien des égards, cette version était en avance sur son temps, puisque Windows 95 , alors nom de code "Chicago", n'était pas encore sorti et Windows NT n'avait qu'une petite part de marché. Microsoft a inclus et mis à jour Visual C ++ 1.5 dans le cadre des versions 2.x jusqu'à 2.1, qui incluaient Visual C ++ 1.52, et les versions 16 bits et 32 ​​bits du Control Development Kit (CDK) étaient incluses. Visual C ++ 2.x a également pris en charge le développement Win32s . Il est disponible via Microsoft Developer Network . Il y avait une édition RISC Visual C ++ 2.0 pour les processeurs MIPS et Alpha , ainsi qu'une édition multiplateforme pour Macintosh ( jeu d'instructions 68000 ).
    • Visual C ++ 2.1 et 2.2 étaient des mises à jour pour 2.0 disponibles via un abonnement.
  • Visual C ++ 4.0, publié le 11 décembre 1995, a introduit l'IDE Developer Studio. Sa disposition en mosaïque, alors nouvelle, de panneaux non superposés (panneau de navigation, panneau de combinaison éditeur / débogueur au niveau de la source et panneau de sortie de la console) se poursuit dans la gamme de produits Visual Studio (à partir de 2013). Visual C ++ 4.0 inclus MFC 4.0, a été conçu pour Windows 95 et Windows NT. Pour permettre la prise en charge des projets hérités (Windows 3.x / DOS), la version 4.0 est fournie avec le CD-ROM d'installation de Visual C ++ 1.52. Les mises à jour disponibles via un abonnement incluaient Visual C ++ 4.1, fourni avec le Microsoft Game SDK (publié ultérieurement séparément sous le nom de DirectX SDK) et Visual C ++ 4.2. Le numéro de version 3.0 a été ignoré pour atteindre la parité des numéros de version entre Visual C ++ 4.0 et MFC 4.0.
  • Visual C ++ 4.2 ne prenait pas en charge le développement Windows 3.x ( Win32s ). Il s'agissait de la version finale avec une édition multiplateforme pour Macintosh disponible et elle différait de la version 2.x en ce qu'elle permettait également la compilation du jeu d'instructions PowerPC .
  • Visual C ++ 5.0, qui incluait MFC 4.21 et a été publié le 27/04/1997, était une mise à niveau majeure à partir de 4.2. Disponible en quatre éditions: Learning, Professional, Enterprise et RISC.
  • Visual C ++ 6.0 (communément appelé VC6), qui incluait MFC 6.0, a été publié en 1998. La version était quelque peu controversée car elle n'incluait pas une mise à jour prévue de MFC. Visual C ++ 6.0 est toujours très populaire et souvent utilisé pour gérer les projets hérités. Il existe cependant des problèmes avec cette version sous Windows XP, notamment en mode débogage (par exemple, les valeurs des variables statiques ne s'affichent pas). Les problèmes de débogage peuvent être résolus avec un correctif appelé «Visual C ++ 6.0 Processor Pack». Numéro de version: 12.00.8804
  • Visual C ++ .NET 2002 (également connu sous le nom de Visual C ++ 7.0), qui incluait MFC 7.0, a été publié en 2002 avec la prise en charge de la génération de code temporel de liaison et du débogage des vérifications d'exécution, .NET 1.0 et Visual C # et Managed C ++ . La nouvelle interface utilisateur utilisait la plupart des raccourcis clavier et conventions de Visual Basic , ce qui expliquait en partie son impopularité parmi les développeurs C ++. Numéro de version: 13.00.9466
  • Visual C ++ .NET 2003 (également connu sous le nom de Visual C ++ 7.1), qui incluait MFC 7.1, a été publié en 2003 avec .NET 1.1 et était une mise à niveau majeure vers Visual C ++ .NET 2002. Il était considéré comme un correctif pour Visual C ++ .NET 2002. En conséquence, la version de mise à niveau en anglais de Visual Studio .NET 2003 a été livrée à un coût minime aux propriétaires de la version anglaise de Visual Studio .NET 2002. Il s'agissait de la dernière version à prendre en charge Windows 95 et NT 4.0 en tant que cible. Numéro de version: 13.10.3077
  • eMbedded Visual C ++ dans différentes versions a été utilisé pour développer pour certaines versions du système d'exploitation Windows CE . Initialement, il a remplacé un environnement de développement composé d'outils ajoutés à Visual C ++ 6.0. eMbedded Visual C ++ a été remplacé en tant qu'environnement de développement distinct par Microsoft Visual Studio 2005 .

Versions 32 bits et 64 bits

  • Visual C ++ 2005 (également connu sous le nom de Visual C ++ 8.0), qui incluait MFC 8.0, a été publié en novembre 2005. Cette version prend en charge .NET 2.0 et inclut une nouvelle version de C ++ ciblée sur le framework .NET ( C ++ / CLI ) dans le but de remplacer la version précédente ( Managed C ++ ). Cependant, le C ++ géré pour CLI est toujours disponible via les options du compilateur. Il a également introduit OpenMP . Avec Visual C ++ 2005, Microsoft a également introduit Team Foundation Server . Visual C ++ 8.0 a des problèmes de compilation de projets MFC AppWizard qui ont été créés à l'aide de Visual Studio 6.0, de sorte que la maintenance des projets hérités peut être poursuivie avec l'IDE d'origine si la réécriture n'est pas possible. Visual C ++ 2005 est la dernière version capable de cibler Windows 98 et Windows Me . La version SP1 (14.00.50727.762) est également disponible dans la mise à jour du SDK Microsoft Windows pour Windows Vista .
  • Visual C ++ 2008 (également connu sous le nom de Visual C ++ 9.0) a été publié en novembre 2007. Cette version prend en charge .NET 3.5. Managed C ++ pour CLI est toujours disponible via les options du compilateur. Par défaut, toutes les applications compilées avec les Runtimes Visual C ++ 2008 (liaison statique et dynamique) ne fonctionneront que sous Windows 2000 et versions ultérieures. Un pack de fonctionnalités publié pour VC9, plus tard inclus dans SP1, a ajouté la prise en charge des extensions de bibliothèque C ++ TR1 . La version SP1 (15.00.30729.01) est également disponible dans le SDK Microsoft Windows pour Windows 7 .
  • Certaines versions de Visual C ++ ont pris en charge Itanium 2 .
  • Visual C ++ 2010 (également connu sous le nom de Visual C ++ 10.0) a été publié le 12 avril 2010. Il utilise une base de données SQL Server Compact pour stocker des informations sur le code source, y compris des informations IntelliSense , pour une meilleure prise en charge d'IntelliSense et de l'achèvement de code. Toutefois, Visual C ++ 2010 ne prend pas en charge Intellisense pour C ++ / CLI. Cette version ajoute une bibliothèque de calcul parallèle C ++ appelée bibliothèque de modèles parallèles , une prise en charge partielle de C ++ 11 , une amélioration significative d'IntelliSense basée sur l' interface frontale d' Edison Design Group et des améliorations de performances à la fois pour le compilateur et le code généré. Cette version est basée sur .NET 4.0, mais prend en charge la compilation en code machine . La prise en charge partielle de C ++ 11 se compose principalement de six fonctionnalités du compilateur: lambdas, références rvalue, auto, decltype, static_assert et nullptr. C ++ 11 prend également en charge les fonctionnalités de la bibliothèque (par exemple, déplacer les composants TR1 de l'espace de noms std :: tr1 directement vers l'espace de noms std). Les modèles Variadic ont également été envisagés, mais ont été retardés jusqu'à une version ultérieure en raison de leur priorité inférieure, ce qui découlait du fait que, contrairement à d'autres fonctionnalités coûteuses à implémenter (lambda, références rvalue), les modèles variadiques ne bénéficieraient qu'à une minorité de bibliothèques les rédacteurs plutôt que la majorité des utilisateurs finaux du compilateur. Par défaut, toutes les applications compilées avec Visual C ++ 2010 Runtimes ne fonctionnent que sur Windows XP SP2 et versions ultérieures. La version RTM (16.00.30319) est également disponible dans le SDK Windows pour Windows 7 et .NET Framework 4 (WinSDK v7.1). La version SP1 (16.00.40219) est disponible dans le cadre de Visual Studio 2010 Service Pack 1 ou via la mise à jour du compilateur Microsoft Visual C ++ 2010 Service Pack 1 pour le SDK Windows 7.1.
  • Visual C ++ 2012 (également connu sous le nom de Visual C ++ 11.0) a été publié le 15 août 2012. Il présente une prise en charge améliorée de C ++ 11 et une prise en charge du développement Windows Runtime .
  • Visual C ++ 2013 (également connu sous le nom de Visual C ++ 12.0) a été publié le 17 octobre 2013. Il présente une prise en charge supplémentaire de C ++ 11 et C99 et introduit un SDK REST .
  • Visual C ++ 2015 (également connu sous le nom de Visual C ++ 14.0) a été publié le 20 juillet 2015. Il présente une prise en charge améliorée de C ++ 11/14/17. Sans aucune annonce de Microsoft, Visual Studio 2015 Update 2 a commencé à générer des appels de télémétrie dans des binaires compilés. Une fois que certains utilisateurs ont contacté Microsoft à propos de ce problème, Microsoft a déclaré qu'il supprimerait ces appels de télémétrie lors de la compilation avec la future mise à jour 3 de Visual Studio 2015. La fonction en question a été supprimée des bibliothèques statiques de Visual C ++ CRT dans Visual Studio 2015 Update 3.
  • Visual C ++ 2017 (également connu sous le nom de Visual C ++ 14.1) a été publié le 7 mars 2017.
  • Visual C ++ 2019 (également connu sous le nom de Visual C ++ 14.2) a été publié le 2 avril 2019.

Numérotation des versions internes

À partir de Microsoft C 6.0, la macro prédéfinie _MSC_VER indique les numéros de version majeurs et mineurs du compilateur Visual C ++. La valeur de la macro est un littéral entier dans lequel les deux derniers chiffres indiquent le numéro de version mineure et les chiffres précédents indiquent le numéro de version principale.

À partir de Visual Studio 2017, _MSC_VER est incrémenté de manière monotone à chaque mise à jour de l'ensemble d'outils Visual C ++ . Ainsi, par exemple, la version de MSVC ++ 14.11 fournie avec Visual Studio 2017 version 15.3.0 est définie _MSC_VER sur 1911 . Microsoft recommande d'utiliser l' >= opérateur pour tester la valeur de _MSC_VER .

Voici les valeurs de _MSC_VER pour différentes versions du compilateur Visual C ++:

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)

Ces numéros de version font référence au numéro de version majeur des compilateurs et bibliothèques Visual C ++, comme on peut le voir à partir des répertoires d'installation. Il ne fait pas référence à l'année dans le nom de la version de Visual Studio. Une liste complète est disponible.

Compatibilité

ABI

L' ABI du compilateur Visual C ++ a historiquement changé entre les principales versions du compilateur. C'est particulièrement le cas pour les conteneurs STL, où la taille des conteneurs a beaucoup varié entre les versions du compilateur. Microsoft recommande donc de ne pas utiliser d'interfaces C ++ aux limites des modules lorsque l'on souhaite activer le code client compilé à l'aide d'une version de compilateur différente. Au lieu de C ++, Microsoft recommande d'utiliser des interfaces C ou COM , qui sont conçues pour avoir un ABI stable entre les versions du compilateur.

Toutes les versions 14.x MSVC ont un ABI stable, et les binaires créés avec ces versions peuvent être mélangés de manière compatible avec les versions antérieures, en tenant compte des restrictions suivantes:

  • La version de l'ensemble d'outils utilisée doit être égale ou supérieure à la version la plus élevée de l'ensemble d'outils utilisée pour créer les binaires liés.
  • La version MSVC redistribuable doit être égale ou supérieure à la version de l'ensemble d'outils utilisée par n'importe quel composant d'application.
  • Les bibliothèques statiques ou les fichiers objets compilés avec / GL (Whole program optimization) ne sont pas compatibles binaires entre les versions et doivent utiliser exactement le même ensemble d'outils.

Bibliothèques d'exécution C

Visual C ++ est livré avec différentes versions des bibliothèques d'exécution C. Cela signifie que les utilisateurs peuvent compiler leur code avec l'une des bibliothèques disponibles. Cependant, cela peut provoquer des problèmes lors de l'utilisation de différents composants ( DLL , EXE ) dans le même programme. Un exemple typique est un programme utilisant différentes bibliothèques . L'utilisateur doit utiliser le même temps d' exécution C pour tous les composants du programme à moins que les implications ne soient comprises. Microsoft recommande d'utiliser la bibliothèque de liens dynamiques multithread (option du compilateur / MD ou / MDd) pour éviter d'éventuels problèmes.

C

Bien que le produit soit originaire d'un IDE pour le langage de programmation C , pendant de nombreuses années, la prise en charge de ce langage par le compilateur s'est conformée uniquement à l'édition originale du standard C , datant de 1989, mais pas à la révision C99 du standard. Il n'y avait pas eu de plans pour soutenir C99 même en 2011, plus d'une décennie après sa publication.

Visual C ++ 2013 a finalement ajouté la prise en charge de diverses fonctionnalités C99 dans son mode C (y compris les initialiseurs désignés, les littéraux composés et le _Bool type), bien qu'il ne soit toujours pas complet. Visual C ++ 2015 a encore amélioré la prise en charge de C99, avec une prise en charge complète de la bibliothèque standard C99, à l'exception des fonctionnalités qui nécessitent des fonctionnalités de langage C99 qui ne sont pas encore prises en charge par le compilateur.

La plupart des modifications de la révision C11 de la norme ne sont toujours pas prises en charge par Visual C ++ 2017. Par exemple, les sélections génériques via le _Generic mot clé ne sont pas prises en charge par le compilateur et entraînent une erreur de syntaxe.

"La conformité totale C11 est sur notre feuille de route, et la mise à jour du préprocesseur n'est que la première étape de ce processus. La fonctionnalité C11 _Generic ne fait pas réellement partie du préprocesseur, elle n'a donc pas encore été implémentée. Une fois implémentée, je m'attends à ce que la fonctionnalité fonctionne indépendamment de l'utilisation de la logique de préprocesseur traditionnelle ou mise à jour. "

Références

Liens externes