前页 | 后页 |
语言宏
当对诸如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跳过令牌,包括括号内的所有内容。
笔记
- 您可以使用“配置>模型>传输>导出参考数据”和“导入参考数据”选项在模型之间传输这些语言宏(或预处理器宏)定义。宏将作为宏列表导出