Présentation
EnglishRÉSUMÉ
Le langage C++ a été développé à partir de C en rajoutant une couche objet. Par rapport à C, assembleur portable qui couvre un très vaste champ d’applications, C++ est emprunt de méthodologies et de techniques issues du génie logiciel. C++ reste difficile à maîtriser, mais un programmeur avec une bonne connaissance de ce langage a la possibilité d'écrire des programmes très efficaces.
Lire cet article issu d'une ressource documentaire complète, actualisée et validée par des comités scientifiques.
Lire l’articleAuteur(s)
-
Manuel SERRANO : Chargé de recherche à l’Institut national de recherche en informatique et en automatique - (INRIA)
INTRODUCTION
Le langage C++ est apparu au début des années 1980. Il a été conçu et développé par Bjarne Stroustrup dans les laboratoires d’AT&T. C++ est bâti au-dessus du langage C dont il présente un certain nombre d’extensions. La plus spectaculaire est probablement sa couche objet dont la conception a été fortement influencée par le langage Simula 67. Plus que les variations techniques, c’est surtout l’« esprit » des deux langages qui sépare C et C++. C est un assembleur portable qui couvre un très vaste champ d’applications. On peut écrire en C des programmes de très bas niveau, comme des contrôleurs de composants matériels spécialisés, mais aussi des programmes plus généralistes tels que des interfaces graphiques utilisateurs. C permet un contrôle très fin de la mémoire, ce qui constitue un atout fort du langage. Cela impose aussi discernement et compétence de la part des programmeurs car avec une telle capacité, tous les coups sont permis ! En revanche, C++ est emprunt de méthodologies et de techniques issues du génie logiciel. C++ a été voulu, et donc conçu, comme une alliance entre l’efficacité de C et la robustesse de langages de plus haut niveau tels que Ada ou Eiffel. Là où C prône la débrouillardise et un pragmatisme forcené, C++ met l’accent sur la pérennité et la fiabilité du logiciel. Cela se ressent, par exemple, dans l’incitation faite aux programmeurs d’utiliser des types abstraits de données (les classes) mais aussi dans un système de types plus strict que celui de C. La possibilité, pour un compilateur C++, d’engendrer du code presque aussi efficace que C a fortement influencé la conception du langage. Il en résulte que C++ est assez difficile à maîtriser, mais, en contrepartie, une bonne connaissance de ce langage permet d’écrire des programmes très efficaces. Cette caractéristique le distingue de bien d’autres langages de programmation évolués.
C++ a probablement bâti son succès sur C. Au moment où C++ est apparu, C était déjà bien implanté et l’engouement pour la programmation par objets émergeait. En se présentant comme une extension du langage C permettant la programmation par objets, il a attiré de nombreux programmeurs. Malgré l’apparition, depuis quelques années, de langages de plus haut niveau qui lui disputent sa popularité, C++ est encore, en ce début de siècle, un des langages généralistes les plus utilisés.
DOI (Digital Object Identifier)
Cet article fait partie de l’offre
Technologies logicielles Architectures des systèmes
(240 articles en ce moment)
Cette offre vous donne accès à :
Une base complète d’articles
Actualisée et enrichie d’articles validés par nos comités scientifiques
Des services
Un ensemble d'outils exclusifs en complément des ressources
Un Parcours Pratique
Opérationnel et didactique, pour garantir l'acquisition des compétences transverses
Doc & Quiz
Des articles interactifs avec des quiz, pour une lecture constructive
Présentation
2. Macroexpanseur CPP
C++ partage avec le langage de programmation C une phase de « macroexpansion », c’est-à-dire qu’un programme C++ n’est pas évalué ou compilé tel quel ; il subit au préalable une réécriture qui est contrôlée par l’utilisateur, au moyen d’un macroexpanseur nommé CPP (C pre-processor). Le langage pour manipuler CPP est assez rudimentaire. Il ne peut être utilisé que pour opérer des transformations simples et ne permet en guise de calcul que la concaténation d’identificateurs et la construction de chaînes de caractères. Malgré ce dépouillement, CPP joue un rôle absolument central tant pour le développement en C qu’en C++. En particulier, comme CPP permet la compilation conditionnelle, il est généralement utilisé pour implanter les parties d’un programme qui sont intrinsèquement non portables (par exemple, les parties qui dépendent des spécificités de tel ou tel système d’exploitation ou matériel). Les fonctionnalités de CPP sont les suivantes :
-
inclusion de fichiers sources ;
-
macroexpansion simple ou fonctionnelle ;
-
compilation conditionnelle ;
-
calcul d’identificateurs et information sur la compilation.
Il est généralement possible d’inspecter le résultat de la phase de macroexpansion soit au moyen d’une option de compilation (par exemple, –E avec le compilateur g++ ou /E avec le compilateur VisualC++), soit au moyen d’un outil séparé (par exemple, cpp sous Unix). Toutes les déclarations de CPP partagent une syntaxe commune assez simple. En particulier, elles commencent toutes par le caractère # en colonne 0 suivi facultativement de caractères d’espace ou de tabulation.
2.1 Inclusion de fichiers sources
L’inclusion de fichiers sources est la première fonction de CPP. Son rôle est encore plus fort en C++ qu’en C parce qu’elle est essentielle à la couche objet. En effet, pour s’éviter des copies manuelles de fragments de code, on place généralement les définitions des classes dans des fichiers inclus. La forme d’inclusion de fichiers est la suivante :
#include <file>
ou
#include "file"
Cette directive a pour effet d’inclure le fichier de nom file. La différence entre les deux formes réside dans la liste des répertoires à parcourir lors de la recherche du fichier....
Cet article fait partie de l’offre
Technologies logicielles Architectures des systèmes
(240 articles en ce moment)
Cette offre vous donne accès à :
Une base complète d’articles
Actualisée et enrichie d’articles validés par nos comités scientifiques
Des services
Un ensemble d'outils exclusifs en complément des ressources
Un Parcours Pratique
Opérationnel et didactique, pour garantir l'acquisition des compétences transverses
Doc & Quiz
Des articles interactifs avec des quiz, pour une lecture constructive
Macroexpanseur CPP
Cet article fait partie de l’offre
Technologies logicielles Architectures des systèmes
(240 articles en ce moment)
Cette offre vous donne accès à :
Une base complète d’articles
Actualisée et enrichie d’articles validés par nos comités scientifiques
Des services
Un ensemble d'outils exclusifs en complément des ressources
Un Parcours Pratique
Opérationnel et didactique, pour garantir l'acquisition des compétences transverses
Doc & Quiz
Des articles interactifs avec des quiz, pour une lecture constructive