Quel est le meilleur compilateur pour la programmation C et C++ ?


Écrire un morceau important de code en C ou C++ n'est pas un choix léger. Puisque dans un projet logiciel typique aujourd'hui, les gens préfèrent le temps de mise sur le marché plus important par rapport à la performance des codes. En conséquence, Javascript, Ruby, Java, Python, PHP dominent en popularité sur C ou C++. Vous démarrez un projet en C et C++, nous pouvons supposer sans risque que votre code est sensible aux caractéristiques de performance comme les contraintes de mémoire comme les systèmes embarqués, le soft realtime, la programmation système ou les applications de bureau.


Chacun de ces domaines apporte ses contraintes spécifiques. Réagissant à ces contraintes, les concepteurs de compilateurs ont également priorisé certaines caractéristiques du compilateur.

  • GCC et clang sont d'excellents compilateurs à cibler, si vous voulez la portabilité avec une assez bonne vitesse
  • Intel et d'autres compilateurs ciblent la vitesse en mettant relativement moins l'accent sur la portabilité. Alors que gcc et clang peuvent s'accorder à un processeur et des variantes spécifiques. Ces options ont tendance à être disponibles plus tôt sur Intel
  • Les compilateurs embarqués cibleront l'empreinte mémoire et ne se préoccuperont pas trop de la vitesse, de la portabilité ou des normes.

C et C++ laissent beaucoup de terrain aux concepteurs de compilateurs et d'environnements de développement. Cela se reflète dans la façon dont de nombreuses réponses mentionnent l'environnement de codage comme les compilateurs.

Lorsqu'on commence un projet en C ou C++ l'infrastructure de support suivante doit être considérée

  • Environnement de construction - C, C++ devient rapidement fastidieux à compiler et à déployer. Il existe de vieux outils de construction comme Make et des outils relativement plus récents comme Cmake, MSBuild, Bazel et gyp.
  • Éditeur de code - Vous vivrez ici pendant que vous codez et déboguez. Choisissez bien. Il existe plusieurs options. Sur Mac, Xcode est une bonne option, Linux vient avec plusieurs options et sur Windows, MSVC est absolument stellaire.
  • Outils de débogage - En tant que chasseur de performance et de correction du code, le débogage doit aller au-delà des déclarations d'impression. Certains développeurs experts en C et C++ vérifient le code d'assemblage pour s'assurer que le compilateur suit le comportement attendu et ajustent le code en conséquence.
  • Linter - Les linters vous permettent d'analyser le code pour les normes et références de codage. Certains linters vous indiqueront également les en-têtes inutilisés

Avec autant de contraintes, cette question ne peut avoir de réponse impartiale. S'assurer que votre code suit un standard spécifique comme c++11 ou c++14 permet une portabilité relative. Ce n'est en aucun cas une garantie.

Suivre la référence C++ pour trouver la syntaxe correcte et choisir la bonne cible. En regardant uniquement les compilateurs gratuits sur les principales plateformes

  • Pour windows, il existe plusieurs outils de compilation
    • Télécharger les outils de construction Visual C++ (compilateur C++ autonome, bibliothèques et outils)
    • Minimalist GNU for Windows
    • Clang - Getting Started
  • Mac OS X
    • Xcode - Apple Developer
    • gcc - Nécessite Xcode et brew pour être installé
  • Linux
    • gcc - Fourni avec Linux. Sur ubuntu installer build-essential package
    • Clang - Installer clang et llvm

Pour les non-libres, Intel Compiler et bibliothèque mathématique comme redoutable la plupart du temps topping performance benchmark. Cela ne signifie pas que, les compilateurs mentionnés ne produisent pas un code bon et rapide.

PS : Note spéciale pour la génération endommagée de développeurs C et C++ de l'Inde (y compris moi-même). Les écoles et collèges indiens enseignent Turbo C++ et n'ont aucune volonté de changer. Turbo C++ est un produit abandonné sans aucune utilisation pratique. Les développeurs qui sortent de ces institutions sont choqués de constater que leurs compétences en C et C++ sont totalement inutiles. Les nouvelles constructions et syntaxes, notamment dans le C++ moderne, permettent un développement logiciel beaucoup plus mature et pratique. Turbo C++ était un compilateur 16 bits ciblant MS-DOS et ses variantes. Il n'existe pas de version 32 bits ou 64 bits de Turbo C++. La dernière version de Turbo C++ pour 4.0 remonte à 1993.