인라인 오퍼레이션

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

피드백