直接插入操作

C_CG::Operation::Inline 属性使您能够作为宏来生成原语操作和全局函数。宏定义在所有者对象的规范文件中。操作调用会在预处理的过程中替换为宏的未解释文本。

只有 Inline 属性设置为 in_header 的原语操作和全局函数可以作为宏来生成。Inline 属性对于构造函数或析构函数无效。直接插入操作没有检测。

宏定义在所有者对象的规范文件中,如下所示:

#define OperationName(ArgumentList) \

操作的返回类型和自变量类型会被忽略。宏所生成的每一行都会以“\”结束。用户代码两边不会生成花括号(“{”和“}”)。利用花括号,您可以撰写简短的返回值的宏。以下示例显示了一个宏定义:

(#define isEqual(arg1, arg2) (arg1)==(arg2))

如果宏是双向的,行末会添加反斜杠(“\”)。下一次代码生成会添加第二个反斜杠“\ \”,这样会导致编译错误。多余的反斜杠必须手动除去。

错误突出显示指示了调用操作(宏调用)的行。

以下示例是为对象 A 的原语操作 op() 生成的代码。该操作的 Inline 属性设置为 in_header。宏定义生成在 A 的规范文件 (A.h) 中。该操作调用全局函数 Global_F(),而该函数也可以在退出之前直接插入生成:

#define A_op(me)            \
    /*#[ operation op() */   \
    int i;                   \
    for(i = 0; i < 3; i++) { \
        printf("LOOP\n");     \
    }                        \
    Global_F();              \
/*#] */

反馈