La traduction de cette page n'est pas à jour. Cliquez ici pour voir la dernière version en anglais.
Génération de code C++
MATLAB® Coder™ permet de générer du code C ou C++. Par défaut, le générateur de code produit du code C. Le code C++ généré peut utiliser des fonctionnalités qui ne sont pas disponibles en langage C, ce qui peut le rendre plus lisible et plus facile à utiliser.
Générer du code C++
Pour générer du code C++, suivez le workflow de génération de code. Consultez la rubrique Overview of Code Generation Using MATLAB Coder.
Pour demander au générateur de code de produire du code C++, procédez de l’une des façons suivantes :
À la ligne de commande, utilisez l’option
-lang:c++avec la commandecodegen.Définissez la propriété
TargetLangà"C++"dans un objet de configuration de code.Dans les paramètres de génération de code, définissez le paramètre Language à
C++.Dans l’application MATLAB Coder, cliquez sur le bouton Language de la barre d’outils MATLAB Coder et sélectionnez
C++.
Fonctionnalités du langage C++ supportées dans le code généré
Pour en savoir plus sur la génération de code utilisant des fonctionnalités clés du langage C++, consultez les rubriques d’aide suivante :
| Objectif | Rubrique |
Générer des classes C++ pour les classes du code MATLAB. | |
Générer des fonctions de point d’entrée en tant que méthodes d’une classe C++. | |
Générer des namespaces C++ pour les namespaces MATLAB. Placer tout le code généré dans un namespace C++ spécifié. | |
Passer des tableaux à allocation dynamique entre votre code C++ personnalisé et le code généré. Le code C++ généré implémente ces tableaux avec le modèle de classe | Use Dynamically Allocated C++ Arrays in Generated Function Interfaces |
Les exemples suivants illustrent l’utilisation de ces fonctionnalités :
Autres différences entre le code C et C++ généré
Si vous générez séparément du code C et C++ pour la même fonction MATLAB et que vous inspectez le code source généré, vous remarquerez certaines différences d’implémentation. Voici les plus notables :
Le code C++ généré contient des fonctions ou méthodes surchargées portant le même nom mais supportant plusieurs signatures. Le langage C ne supporte pas la surcharge de fonctions.
Le code C++ généré réutilise le même nom d’identificateur dans différentes hiérarchies de namespaces. Par exemple, le même nom de type
myTypepeut figurer dans deux hiérarchies de namespaces différentes sous les namespaces de plus haut niveaumyNamespace_1etmyNamespace_2. Le langage C ne supporte pas les namespaces ni la réutilisation des noms d’identificateur.Dans le code C généré, les en-têtes de fonction contiennent des garde-fous d’inclusion
#ifdef __cplusplusqui spécifient l’identificateurextern "C"pour les fonctions C générées. Le compilateur et l’éditeur de liens utilisent ces identificateurs dans la compilation de code C dans le cadre d’un projet C++.Le code C++ généré utilise l’extension de fichier
.cpppour les fichiers C++ et l’extension.hpour les fichiers d’en-tête. Le code C généré utilise les extensions.cet.h.Le code C++ généré utilise des conversions C++ telles que
static_castqui sont plus explicites que la syntaxe de conversion du C.Le code généré définit les valeurs
InfetNaNavec des mécanismes différents en C++ et en C.Le code C++ généré utilise les types de données personnalisés décrits dans Mapping MATLAB Types to Types in Generated Code.
Le code C++ généré n’utilise pas les mêmes bibliothèques que le code C généré. Par exemple, la norme de langage par défaut du C++ et du C est décrite dans Change Language Standard Used for Code Generation.