Réserver une Démo
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 éparpillées dans le code. Cela peut faciliter la gestion du code, mais peut entraver l'analyse du langage C++ sous-jacent.

Pour aider à remédier à cela, vous pouvez inclure n'importe quel nombre 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 en avez la facilité , de prétraiter d'abord le code à l'aide du compilateur approprié ; de cette façon, les définitions et définitions de macros complexes sont développées et peuvent être facilement analysées. Si vous n'avez pas cette facilité , cette option offre 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

Marcher

Action

Voir également

1

Sélectionnez l'option de menu "Macros du préprocesseur".

La boîte de 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 des classes et des opérations, comme dans ces exemples :

classe __declspec Foo

{

int __declspec Bar( int p);

} ;

Si declspec est défini comme une macro C++, comme indiqué, la classe importée et l'opération contiennent une Valeur Étiquetée appelée DeclMacro1 avec la valeur __declspec (les macros suivantes seraient définies comme DeclMacro2, DeclMacro3 et ainsi de suite).

Lors de l'ingénierie avancée, 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 qui peuvent 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 même définition.

Bloc de macros

BEGIN_INTERFACE_PART ^ END_INTERFACE_PART

Le symbole ^ représente le corps de la macro - cela permet de passer d'une macro à l'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 entre 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 à l'intérieur des parenthèses et à l'intérieur des accolades. Note que si la macro de fonction inclut le corps de la fonction, elle ne peut pas être combinée avec une macro de 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 > Transfert > 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

Apprenez Plus