Developpez.com

Le Club des Développeurs et IT Pro

Visual C++ renforce son support des standards C++

Microsoft sort une Preview du compilateur avec des progrès pour C++11 et C++14

Le 2013-11-20 12:24:07, par Hinault Romaric, Responsable .NET
Microsoft veut rendre son compilateur Visual C++ conforme aux standards C++. En juillet dernier, la société avait dévoilé sa feuille de route pour la prise en charge de C99, C++11 et C++14 dans son environnement de développement.

La firme s’est engagée lors de l’événement GoingNative 2013, dédié au monde du C++, à publier des préversions CTP (customer technology preview) du compilateur C++ avec les évolutions dans la prise en charge de C++ 11 et C++ 14, avant intégration dans Visual Studio.


Conformément à cet engagement, Microsoft vient de publier une préversion du compilateur Visual C++, qui est disponible en téléchargement et apporte les caractéristiques C++11, C++14 et C++/CX suivantes :

  • les opérateurs de conversion explicite ;
  • les qualificatifs de référence sur les fonctions membres ;
  • les fonctions d’initialisation statiques locales ;
  • l’héritage des constructeurs ;
  • alignof/alignas ;
  • __func_ ;
  • Extended sizeof ;
  • constexpr (sauf pour les “member functions”) ;
  • noexcept (unconditional) ;
  • C++14 decltype(auto) ;
  • C++14 auto function return type deduction ;
  • a
  • C++14 generic lambdas


Le compilateur fonctionne uniquement avec Visual Studio 2013 ou sa version gratuite « Desktop Express ». Microsoft précise que c’est une préversion qui ne doit pas être utilisée dans un environnement de production.

Télécharger Visual C++ Compiler November 2013 CTP

Télécharger Visual Studio Express 2013 pour Windows Desktop

Source : blog MSDN

Et vous ?

Que pensez-vous de l’engagement de Microsoft à supporter les standards C++ ?

Utilisez-vous les outils de la société pour vos développements C++ ?

Quelles autres fonctionnalités de C++14 aimeriez-vous que Microsoft prenne en charge ?
  Discussion forum
36 commentaires
  • JolyLoic
    Rédacteur/Modérateur
    Envoyé par Markand
    Je pense plutôt qu'ils boudent le C.
    Je pense qu'une entreprise agit généralement sur des avis plus sérieux et posés qu'une simple bouderie...
    Envoyé par Markand

    Ils disent vraiment ne pas vouloir implémenter le C99, mais à mon avis, le C99 est bien plus simple à implémenter que le C++11 et depuis 1999, je pense que s'ils l'avaient vraiment voulu, ils auraient pu le temps de l'implémenter.
    Même s'il est plus simple, le coût d'implémentation n'est pas nul. Chaque fonctionnalité C en plus aurait été faite au détriment d'une fonctionnalité C++. Et ils voient bien plus d'intérêt dans le C++ que dans le C pour leur plate-forme.
    Envoyé par Markand

    Je pense qu'il est évident que C++ est plus adapté à une grosse application moderne, mais le C peut encore servir notamment à la programmation système et drivers.
    Cette phrase peut se comprendre de deux manières :
    - Le C++ est plus adapté que le C pour développer une grosse application. Je suis d'accord.
    - C'est uniquement dans le domaine des grosses applications que le C++ est plus adapté que le C. Là, je ne suis pas d'accord. Même pour de la programmation système et driver, je privilégierais le C+++ au C (certainement en désactivant certains aspects, comme le RTTI ou les exceptions), si sur les plate-formes visées je dispose d'un compilateur C++ de qualité.
  • Médinoc
    Expert éminent sénior
    Franchement si, je pense que C++ est mieux adapté que C pour ça.
    Ne serait-ce que pour les destructeurs et tout ce qui en découle (pointeurs intelligents etc.). Plus une application grossit, plus il devient difficile d'en gérer la mémoire manuellement.
  • Markand
    Membre éclairé
    Envoyé par Médinoc
    Apparemment, ils n'ont pas le temps de tout faire.
    Je pense plutôt qu'ils boudent le C. De toute façon c'est simple, par défaut VisualStudio ne propose que la création de fichier "C++ File". Il suffit de changer l'extension pour le compiler en C, mais IntelliSense n'en fait pas pour autant en surlignant toutes les lignes non compatible C++ telles que retour de malloc non casté, etc.

    Ils disent vraiment ne pas vouloir implémenter le C99, mais à mon avis, le C99 est bien plus simple à implémenter que le C++11 et depuis 1999, je pense que s'ils l'avaient vraiment voulu, ils auraient pu le temps de l'implémenter.

    Je pense juste que Microsoft oriente plutôt ces développeurs à utiliser C++ putôt que C. Je pense qu'il est évident que C++ est plus adapté à une grosse application moderne, mais le C peut encore servir notamment à la programmation système et drivers.
  • Markand
    Membre éclairé
    Je ne comprends vraiment pas ce qu'ils ont envers C99 pour ne pas vouloir l'implémenter.
  • Markand
    Membre éclairé
    Oui, c'est d'ailleurs ces deux seuls points qui me faisait pencher pour C plutôt que C++ pour les drivers juste à cause de ça. Je ne savais pas que désactiver les exceptions était possible. C'est quelque chose de standardisé ?
  • KsassPeuk
    Membre confirmé
    En n'utilisant que du code noexcept, tu n'auras pas d'exception ^^ .
  • Klaim
    Membre expert
    Envoyé par Markand
    Oui, c'est d'ailleurs ces deux seuls points qui me faisait pencher pour C plutôt que C++ pour les drivers juste à cause de ça. Je ne savais pas que désactiver les exceptions était possible. C'est quelque chose de standardisé ?
    Je ne crois pas (je n'ai pas verifie) que la desactivation elle meme est definie par le standard, mais rien n'empeche une implementation (un compilateur) de fournir des options de desactivations.

    A ce que je sache, tous les compilateurs actuels (et meme precedents) fournissent de tels options. Auparavant il y en avait meme qui ne fournissaient simplement pas ces features, parcequ'ils etaient designe pour des plateformes pour lesquels il n'y avait aucun interet.
  • germinolegrand
    Membre expert
    Ils ont annoncé explicitement ne pas vouloir supporter le C99. Ce ne sont que des "client's feature requests" pour ce qu'ils ont fait.
    Voir http://cpp.developpez.com/actu/64246...C-11-C-14-C99/ dans la vidéo source, c'est indiqué en haut à gauche des slides de présentation ("This is not an attempt to conform C99".
  • Médinoc
    Expert éminent sénior
    Apparemment, ils n'ont pas le temps de tout faire.
  • Traroth2
    Membre émérite
    Envoyé par Markand
    Je pense qu'il est évident que C++ est plus adapté à une grosse application moderne
    Non seulement ce n'est pas "évident", mais ce n'est pas vrai.