前页 后页

语言宏

当对诸如C ++之类的语言进行逆向工程时,您可能会发现分散在整个代码中的预处理器指令。这可以使代码管理更加容易,但是会妨碍对基础C ++语言的解析。

为了解决这个问题,您可以包含任意数量的宏定义,这些宏定义在反向工程的解析阶段将被忽略。如果可以的话,最好还是先使用适当的编译器对代码进行预处理。这样,可以扩展复杂的宏定义和定义,并且可以轻松地对其进行解析。如果您没有此功能,则此选项可提供方便的替代方法。

访问

色带

配置>参考数据>设置>预处理程序宏或

开发>首选项>选项>定义预处理器宏

定义宏

行动

也可以看看

1个

选择“预处理器宏”菜单选项。

显示“语言宏”对话框。

2

单击添加新按钮。

3

输入宏的详细信息。

4

单击确定按钮。

嵌入声明中的宏

有时在类和操作的声明中使用宏,如以下示例所示:

__declspec Foo类

{

int __declspec Bar(int p);

};

如概述所示,如果将declspec定义为C ++宏,则导入的Class和操作将包含一个名为DeclMacro1的标记值,其值为__declspec(后续的宏将定义为DeclMacro2,DeclMacro3等)。

在正向工程过程中,这些标记值用于重新生成代码中的宏。

定义复杂的宏

定义可以跨越多行的复杂宏的规则有时很有用; Enterprise Architect忽略规则定义的整个代码部分。

可以在这两个示例中在Enterprise Architect定义此类宏。两种类型都可以合并为一个定义。

块宏

BEGIN_INTERFACE_PART ^ END_INTERFACE_PART

^符号代表宏的主体-这使您可以从一个宏跳转到另一个宏; ^符号周围的空格是必需的。

功能宏

RTTI_EMULATION()

Enterprise Architect跳过令牌,包括括号内的所有内容。

笔记

  • 您可以使用“配置>模型>传输>导出参考数据”和“导入参考数据”选项在模型之间传输这些语言宏(或预处理器宏)定义。宏将作为宏列表导出

学到更多