Pré. | Proc. |
Macros de langage
Lors de la rétro-ingénierie d'un langage tel que C++, vous pouvez trouver des directives de préprocesseur dispersées dans le code. Cela peut faciliter la gestion du code, mais peut entraver l'analyse du langage C++ sous-jacent.
Pour remédier à cela, vous pouvez inclure un nombre quelconque de définitions de macros, qui sont ignorées pendant la phase d'analyse de la rétro-ingénierie. Il est toujours préférable, si vous disposez de facilité , de prétraiter le code en utilisant d'abord le compilateur approprié ; de cette façon, les définitions et définitions de macros complexes sont étendues et peuvent être facilement analysées. Si vous ne disposez pas de facilité , cette option constitue un substitut pratique.
Accéder
Ruban |
Paramètres > Données de référence > Paramètres > Macros du préprocesseur ou Développer > Code source > Options > Configurer > Définir les macros du préprocesseur |
Définir une macro
Étape |
Action |
Voir aussi |
---|---|---|
1 |
Sélectionnez l'option de menu « Macros du préprocesseur ». La dialogue « Macros de langage » s'affiche. |
|
2 |
Cliquez sur le bouton Ajouter nouveau. |
|
3 |
Entrez les détails de votre macro. |
|
4 |
Cliquez sur le bouton OK . |
Macros intégrées dans les déclarations
Les macros sont parfois utilisées dans la déclaration de classes et d'opérations, comme dans ces exemples :
classe __declspec Foo
{
int __declspec Barre( int p);
};
Si declspec est défini comme une macro C++, comme indiqué, la classe et l'opération importées contiennent une Valeur Étiquetée appelée DeclMacro1 avec valeur __declspec (les macros suivantes seraient définies comme DeclMacro2, DeclMacro3 et ainsi de suite).
Lors de l'ingénierie prospective, ces Valeur Étiquetés sont utilisées pour régénérer les macros dans le code.
Définir des macros complexes
Il est parfois utile de définir des règles pour des macros complexes pouvant s'étendre sur plusieurs lignes ; Enterprise Architect ignore toute la section de code définie par la règle.
De telles macros peuvent être définies dans Enterprise Architect comme dans ces deux exemples ; les deux types peuvent être combinés dans une seule définition.
Bloc macros
DEBUT_PARTIE_INTERFACE ^ FIN_PARTIE_INTERFACE
Le symbole ^ représente le corps de la macro - cela permet de passer d'une macro à une autre ; les espaces entourant le symbole ^ sont obligatoires.
Macros de fonctions
RTTI_EMULATION()
Enterprise Architect ignore le jeton, y compris tout ce qui se trouve à l'intérieur des parenthèses.
Les macros de fonction peuvent également inclure le corps de la fonction :
RTTI_EMULATION() {}
Dans ce cas, Enterprise Architect ignore le jeton, y compris tout ce qui se trouve entre parenthèses et entre accolades. Note que si la macro de fonction inclut le corps de la fonction, elle ne peut pas être combinée avec une macro Bloc .
Notes
- Vous pouvez transporter ces définitions de macro de langage (ou macro de préprocesseur) entre les modèles, en utilisant les options « Paramètres > Modèle > Transférer > Exporter les données de référence » et « Importer les données de référence » ; les macros sont exportées sous forme de liste de macros.