Quel est votre compilateur C/C++ préféré ? Comment choisissez-vous votre compilateur ? Partagez avec nous vos expériences !

Le , par LittleWhite, Responsable 2D/3D/Jeux
Quel est votre compilateur C/C++ préféré ?
Bonjour à tous,

Avec les évolutions des normes du C et du C++, le choix du compilateur et même de sa version sont devenus un point important dans un projet de développement. Notamment, certains développeurs pouvaient être exaspérés du manque du support des dernières versions du C++ dans le compilateur de Microsoft, Visual C++. L'arrivée de Clang a apporté un renouveau dans le monde des compilateurs : l'équipe est très réactive pour implémenter les nouveautés du langage et sa modularité permet bien plus, et cela, plus facilement que GCC.


C'est pourquoi je souhaite vous poser cette question aujourd'hui. Quel est votre compilateur C/C++ préféré ? Avez-vous remplacé GCC par Clang ? Êtes-vous un inconditionnel de Visual C++ ? Utilisez-vous le compilateur d'Intel pour ses capacités d'optimisation ?

Nous avons la chance de pouvoir choisir entre plusieurs compilateurs. Tous sont bons et chacun possède ses avantages et ses inconvénients. Le choix n'est pas anodin lorsque nous savons que c'est l'outil qui générera le binaire final. Faites-vous des compromis dans votre choix ?

N'hésitez pas à nous dire en quoi vous aimez tel ou tel compilateur.

J'ai consciemment rassemblé le C et le C++ car les compilateurs C++ gèrent tout aussi bien le C.


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse Signaler un problème

Avatar de Max Lothaire Max Lothaire - Membre confirmé https://www.developpez.com
le 05/12/2015 à 16:32
GCC.
Je suis la plupart du temps sous linux, et ce compilateur par défaut fait le taf.

Si j'avais été sous Windows, j'aurais sans doute hésité. Est-ce que, mis-à-part qu'il soit libre, minGW a de réels avantages par rapport au compilateur de Microsoft ?
Avatar de Gugelhupf Gugelhupf - Modérateur https://www.developpez.com
le 05/12/2015 à 17:52
Je n'ai pas de compilateur préféré pour C++, je prends généralement celui qui est le moins prise de tête. Sous Windows, la dernière fois où j'ai fait du Qt je n'ai pas eu d'autre choix que d'utiliser MingGW.
Avatar de Martin Lestas Martin Lestas - Membre éprouvé https://www.developpez.com
le 05/12/2015 à 18:18
GCC car c'est le seul que j'ai pu essayer : pourquoi ? Car mes études me l'impose
Avatar de laerne laerne - Membre éprouvé https://www.developpez.com
le 05/12/2015 à 20:51
On entend beaucoup parler de qualité des messages d'erreurs du compilateur de Microsoft.

Ben j'ai essayé visual studio, gcc et clang, et clang est vraiment plus clair dans la formulation des messages.
Avatar de Iradrille Iradrille - Expert confirmé https://www.developpez.com
le 05/12/2015 à 21:16
J'utilise principalement VC++, pas parce que c'est le meilleur ni mon préféré, mais c'est simplement un des seuls à s'intégrer à Visual Studio.

Si j'avais les moyens, j'utiliserais le compilo Intel : bon support de C++11 / C++14 et des perfs dans l'ensemble meilleures que VC++.

Avec Clang qui arrive sur Visual Studio, il est possible que j'abandonne VC++, tout dépendra du support de C++11 / C++14 / C++17 (et des perfs si la différence est grande) à ce moment là.

Citation Envoyé par laerne Voir le message
On entend beaucoup parler de qualité des messages d'erreurs du compilateur de Microsoft.

Ben j'ai essayé visual studio, gcc et clang, et clang est vraiment plus clair dans la formulation des messages.
Clang est le meilleur des trois au niveau des messages d'erreurs, c'est incontestable.
Maintenant avec l'habitude, n'importe quel compilo fourni des messages clairs. Même pas besoin de lire l'erreur, rien qu'en voyant la longueur de l'erreur on sait ce que c'est .
Avatar de Metalman Metalman - Membre expert https://www.developpez.com
le 05/12/2015 à 22:16
Citation Envoyé par Max Lothaire Voir le message
Si j'avais été sous Windows, j'aurais sans doute hésité. Est-ce que, mis-à-part qu'il soit libre, minGW a de réels avantages par rapport au compilateur de Microsoft ?
Ca va paraitre très stupide, mais j'ai beaucoup galéré pour faire des applications "qui fonctionnent" chez mes amis en utilisant VS... alors que MinGW n'a jamais raté.
En effet, malgré les "redistributables VC/VC++" innombrables que j'ai fourni à des amis, j'étais incapable de faire fonctionner des exécutables simples chez tout le monde simultanément. (okok j'aurais dû aller dans la section C du forum pour le dire, mais à l'époque je ne connaissais pas vraiment dev.net ! )
Ca devait venir des libs utilisées, mais bref.
Pour faire des rushs jeux vidéos, MinGW reste un choix très bon sur Windows (et la gratuité aussi, pour vendre sur steam).

Perso j'utilise énormément GCC, un peu VS, et j'ai utilisé 2 ou 3 fois icc pour voir ce que cela produisait... mais icc gratuit n'optimise que pour pentium IV "de souvenir".

Pour compléter le sondage, il faudrait ajouter le compilo Sun/Oracle et les quelques extensions IBM comme le "Metal C" (nonon ce n'est pas une metalblague de metalman)
Avatar de born to code born to code - Nouveau membre du Club https://www.developpez.com
le 07/12/2015 à 10:58
Jusque la j'utilise MinGw, mais je projette d'utiliser celui que propose visual c++ en guise de comparaison.
Avatar de captaindidou captaindidou - Membre confirmé https://www.developpez.com
le 07/12/2015 à 16:27
J'ai pleuré lorsque j'ai constaté que CUDA n'était pas compatible avec gcc sous windows alors que sous linux, si.

Je ne veux même pas entendre parler M$ C++. ça ne m'intéresse pas.
Avatar de renoo renoo - Membre éprouvé https://www.developpez.com
le 07/12/2015 à 18:40
Mingw sous windows en 32 et 64 bits. J'utilise occasionnellement vs2015, j'aime bien l'idée de valider son code avec plusieurs compilateurs. Mais pour mon code, le binaire généré était 20% plus rapide avec gcc, j'ai pas trop chercher à comprendre en détail pourquoi peut être certains flags étaient mal réglés.
Je pense aussi que clang a mis un bon coup de pied pour faire avancer les choses et notamment les messages d'erreurs.
Avatar de azias azias - Membre éclairé https://www.developpez.com
le 08/12/2015 à 9:21
Dans nos projets nous utilisons pour le moment gcc en cross-compilateur sur un linux (via jenkins) pour produire des exe windows 32bits de nos produits et aussi gcc (version mingw) sur nos PC pour le développement.

Mais je m'occupe progressivement de faire la transition vers msvc. Nous n'avons pas encore fait réellement de test de comparaison mais nos premiers essais qui nous ont amener à décider la transition ont montrés que les exe qu'on obtient sont plus petits et qu'ils sont plus rapide à l'éxécution (j'ai une différence d'au moins 30% sur un exe).

Depuis qu'il y a la version Community, nous pouvons envisager d'utiliser le compilo de Visual Studio (pas dans nos moyens sinon) et la disponiblité prochaine des outils de compilation utilisable sans installer Visual Studio est une très bonne nouvelle (nous utilons un serveur d'intégration continue et on n'a pas franchement envie d'installer tout Visual Studio sur un serveur).

Les difficultés/différences entre les deux que je rencontre sont:
  • Différence de support du C++11 (aucun des deux ne prend en charge complètement la norme, et chacun le fait différemment)
  • msvc plus strict sur certaines choses, par exemple il génère une erreur de compilation quand on veut affecter un littéral double à une variable float, ce qui n'est pas plus mal. Et d'une façon général aussi plus de warning sur les conversions implicites qui risquent de faire perdre de l'information.
  • En revanche, nos tests unitaires (en utilisant cpputest) détectent des memory leaks avec msvc qui ne sont pas présents avec gcc, en l'occurence quand on utilise des stream (stringstream ou tout simplement sur des lecture/écriture de fichiers). Apparemment l'explication c'est que windows ne libère pas immédiatement les stream de façon synchrone, mais je me retrouve obligé de désactiver la détection des memory leaks sur les fonctions en questions pour les tests passent.
  • gcc nécessite qu'on désactive certaines optimisations pour éviter certains plantages aléatoires (quand on utilise certaines fonction de Eigen), on n'a pas ce problème avec msvc.
  • msvc est assez limitant concernant le link de bibliothèques qui ont pu être compilées avec des options différentes, ça évite sans doute des erreurs mais c'est assez strict.


En ce qui concerne les options de compilation, elles sont aussi compliquées à maîtriser chez l'un que chez l'autre, après il y a une question d'habitude sans doute. Pour les compilations nous nous basons sur CMake et un serveur d'intégration continue, donc une fois les choses configurées ça roule tout seul. Pour le développement, nous utilisons Eclipse, a priori msvc est aussi censé s'intégrer avec mais je n'ai pas encore testé plus que ça, en particulier il faut voir le debugger.

Sinon une chose qui pourrait s'avérer limitant c'est tout simplement la disponiblité de bibliothèques non open-sources dans les format supportés par le compilateur (msvc étant assez strict là-dessus il faut faire attention)
Contacter le responsable de la rubrique C++