Inline プロパティーが in_header に設定されている基本操作とグローバル関数のみが、マクロとして生成できます。 Inline プロパティーは、コンストラクターあるいはデストラクターに対しては機能しません。 インライン操作にはトレース/アニメーション設定はありません。
マクロは、所有者オブジェクトの宣言ファイルに次のように定義されます。
#define OperationName(ArgumentList) ¥
戻りの型および引数タイプあるいは操作は無視されます。 マクロの生成された各行は、末尾に「¥」が付きます。 中括弧 (「{」と「}」) は、ユーザー・コードの周囲には生成されません。中括弧を使用して、値を返す短いマクロを作成することができます。 以下に、マクロ定義の例を示します。
(#define isEqual(arg1, arg2) (arg1)==(arg2))
マクロがラウンドトリップされると、行の末尾に円記号 (「¥」) が追加されます。 次にコード生成すると、2 つ目の円記号 (「¥ ¥」) が追加され、これはコンパイル・エラーの原因になります。 余分な円記号は、手動で除去する必要があります。
エラーの強調表示で、呼び出し操作 (マクロ呼び出し) の行が表示されます。
次の例は、オブジェクト 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(); ¥
/*#] */