只有 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(); \
/*#] */