请考虑模型在包中直接定义了变量的情况。这些变量定义了各种常量(例如
PI 和 DEGREES_PER_RADIAN)。其中的一些变量是依据其他变量定义的,因此,被依赖的变量必须在其他变量之前进行声明,这样应用程序才能编译成功。但是,产品不允许您覆盖变量声明的缺省字母顺序。
至少可以通过两种方法来解决此问题:
- 使用类型来定义常量。例如,假定存在具有如下声明的类型 PI:
const double %s = 3.14
在此语法中,%s 将替换为名称 PI。
DEGREES_PER_RADIAN 类型将具有以下声明:
const double %s = 180.0 / PI
在此语法中,%s 将替换为名称
DEGREES_PER_RADIAN。
由于在
Rational® Rhapsody® 中可以更改类型声明顺序以使 PI 先生成,因此编译将成功。
- 创建类型为 const double 并且初始值为 3.14
的变量 PI。创建类型为 const double 并且初始值为
180.0 / PI 的第二个变量
DEGREES_PER_RADIAN。由于 Rational Rhapsody 将在 PI
变量之前生成变量 DEGREES_PER_RADIAN,因此编译无法成功。
对于 DEGREES_PER_RADIAN 变量,将 CPP_CG::Attribute::VariableInitializationFile
属性设置为 Implementation
以便在实现文件中初始化此变量。缺省设置 (Default)
将导致将初始化置于规范文件中(如果类型声明以 const
开头);否则,初始化将置于实现文件中。
现在,应用程序能够正确地进行编译。