Macros de Lenguaje

Superior  Previo  Próximo

Cuando se hace ingeniería inversa de un lenguaje como C++, muchas veces hay directivas del pre-procesador dispersas a través del código. Esto puede hacer más sencilla la administración del código, pero puede obstaculizar el análisis del lenguaje C++ subyacente.

 

Para ayudar a remediar esto, puede establecer cualquier cantidad de definiciones MACRO que se ignorarán durante la fase de análisis de la ingeniería inversa. Es preferible, si tiene la posibilidad, de pre-procesar el código utilizando primero el compilador apropiado; de esta manera, las definiciones de macro complejas se expanden y se pueden analizar. Si no tiene esta posibilidad, entonces esta opción provee un sustituto conveniente.

 

Para definir un macro

1. Seleccione la opción de menú Configuraciones | Macros de Lenguaje. Se abrirá la ventana Macros de lenguajes

 

languagemacros

 

2. Presione Agregar Nuevo.

3. Ingrese los detalles de su macro.

4. Presione Aceptar.

 

Macros Embebidos dentro de las Declaraciones

 

Los Macros están algunas veces dentro de la declaración de clases y operaciones, como en los siguientes ejemplos:  

class __declspec Foo

{

       int __declspec Bar(int p);       

};

Si declspec es definido como una macro de C++ como subrayado arriba, la clase importada y la operación contendrá un valor etiquetado llamado DeclMacro1 con valor __declspec. (Macros subsecuentes serán definidos como DeclMacro2, DeclMacro3, etc.). Durante la ingeniería directa, estos valores etiquetados se usan para regenerar los macros en el código.

 

Definiendo Macros Complejos

 

Esto es a veces útil para definir reglas para macros complejos que pueden expandir líneas múltiples. Enterprise Architect ignorará toda la sección de código definida por la regla. Tales macros se pueden definir en EA en el siguiente ejemplo:

    BEGIN_INTERFACE_PART ^ END_INTERFACE_PART

donde el símbolo ^ representa el cuerpo del macro.

 

Tenga en cuenta: que los espacios de alrededor del símbolo ^ son requeridos.