C ++ est plus qu'un langage de programmation:
a) C'est un "meilleur" C b) C'est un langage orienté objet c) C'est un langage qui nous permet d'écrire des programmes génériques
Bien que toutes ces fonctionnalités puissent être utilisées séparément, les meilleurs résultats sont obtenus lorsque les trois d'entre elles sont utilisées simultanément. Néanmoins, si vous choisissez de n'en choisir qu'un, la qualité du logiciel embarqué augmentera.
a) C'est un "meilleur" C
C ++ est un langage typé fort; plus fort que C. Vos programmes bénéficieront de cette fonctionnalité.
Certaines personnes ont peur des pointeurs. C ++ inclut les références. Fonctions surchargées.
Et cela vaut la peine de dire: Aucune de ces fonctionnalités n’est générée par des programmes plus importants ou plus lents.
b) C'est un langage orienté objet
Quelqu'un a dit dans cet article qu'abstraction de la machine dans les microcontrôleurs n'est pas une bonne idée. Faux! Nous tous, ingénieurs intégrés, avons toujours fait abstraction de la machine, à l’aide d’une autre méthode que celle du C ++. Le problème que je vois avec cet argument est que certains programmeurs ne sont pas habitués à penser aux objets, c'est pourquoi ils ne voient pas les avantages de la POO.
Lorsque vous êtes prêt à utiliser le périphérique d'un microcontrôleur, il est probable que le périphérique a été extrait pour nous (de vous-même ou d'un tiers) sous la forme du pilote de périphérique. Comme je l'ai dit précédemment, ce pilote utilise le code C, comme le montre l'exemple suivant (tiré directement d'un exemple de NXP LPC1114):
/ * Configuration de la minuterie pour le match et l’interruption à TICKRATE_HZ * /
Chip_TIMER_Reset (LPC_TIMER32_0);
Chip_TIMER_MatchEnableInt (LPC_TIMER32_0, 1);
Chip_TIMER_SetMatch (LPC_TIMER32_0, 1, (timerFreq / TICKRATE_HZ2));
Chip_TIMER_ResetOnMatchEnable (LPC_TIMER32_0, 1);
Chip_TIMER_Enable (LPC_TIMER32_0);
Voyez-vous l'abstraction? Ainsi, lors de l'utilisation de C ++ dans le même but, l'abstraction passe au niveau supérieur grâce au mécanisme d'abstraction et d'encapsulation du C ++, à un coût nul!
c) C'est un langage qui nous permet d'écrire des programmes génériques
Les programmes génériques sont réalisés au moyen de modèles, et les modèles ne génèrent également aucun coût pour nos programmes.
De plus, le polymorphisme statique est obtenu avec des modèles.
Méthodes virtuelles, RTTI et exceptions.
Il existe un compromis lors de l'utilisation de méthodes virtuelles: un meilleur logiciel contre une pénalité de performances. Cependant, rappelez-vous qu'une liaison dynamique est susceptible d'être implémentée à l'aide d'une table virtuelle (un tableau de pointeurs de fonction). J'ai souvent fait la même chose en C (même régulièrement), aussi je ne vois pas les inconvénients liés à l'utilisation de méthodes virtuelles. De plus, les méthodes virtuelles en C ++ sont plus élégantes.
Enfin, un conseil sur RTTI et les exceptions: NE LES UTILISEZ PAS dans les systèmes embarqués. Evitez-les à tout prix !!