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