다음을 통해 공유


EXT_COMMAND 매크로(engextcpp.hpp)

EXT_COMMAND 매크로는 EXT_COMMAND_METHOD 매크로를 사용하여 선언된 확장 명령을 정의하는 데 사용됩니다.

확장 명령은 다음과 같이 정의됩니다.

구문

void EXT_COMMAND(
   _Name,
   _Desc,
   _Args
);

매개 변수

_Name

확장 명령의 이름입니다. EXT_COMMAND_METHOD 사용하여 확장 명령을 선언하는 데 사용되는 _Name 매개 변수와 동일해야 합니다.

EXT_COMMAND 매크로이므로 _Name 확장 명령의 맨 이름이어야 하며 따옴표로 묶거나 변수로 묶어서는 안 됩니다.

_Desc

확장 명령을 설명하는 문자열입니다.

_Args

확장 명령에서 예상하는 인수를 설명하는 문자열입니다. _Args 문자열의 형식을 지정하는 방법에 대한 자세한 내용은 확장 인수 구문 분석을 참조하세요.

참고 인수를 설명하는 문자열을 제공하는 대신 문자열 "{{custom}}"을 사용하여 확장 명령이 인수 자체를 구문 분석함을 나타낼 수 있습니다. GetRawArgStr 메서드를 사용하여 구문 분석용 원시 인수를 가져올 수 있습니다.
 

반환 값

없음

설명

확장 명령의 본문은 인수를 사용하지 않습니다. 그러나 확장 명령은 EXT_CLASS 클래스의 메서드로 선언되므로 ExtExtension 기본 클래스의 모든 멤버에 액세스할 수 있으며, 그 중 일부는 확장 명령 실행을 위해 초기화됩니다.

매크로 EXT_COMMAND_METHOD 사용하여 확장 명령을 선언해야 합니다. 모든 C++ 선언과 마찬가지로 EXT_COMMAND_METHOD 선언은 EXT_COMMAND 정의 앞에 소스 파일에 표시됩니다.

디버거 엔진이 확장 명령 메서드를 호출하면 호출을 try/except 블록으로 래핑합니다. 이렇게 하면 확장 코드의 일부 버그 유형으로부터 엔진이 보호됩니다. 하지만 확장 호출은 엔진과 동일한 스레드에서 실행되므로 여전히 작동이 중단될 수 있습니다.

또한 이 매크로는 _Name (매크로에서 정의한 메서드를 호출함)라는 함수를 만듭니다. 엔진이 확장을 호출하려면 확장 라이브러리 DLL에서 이 함수를 내보내야 합니다.

EXT_CLASS 상수는 EngExtCpp 확장 라이브러리를 나타내는 C++ 클래스의 이름을 지정합니다.

EXT_CLASS

    #ifndef EXT_CLASS
    #define EXT_CLASS Extension
    #endif

EXT_CLASS 기본값은 Extension입니다. 헤더 파일 Engextcpp.hpp를 포함하기 전에 EXT_CLASS 정의하여 이 값을 변경할 수 있습니다.

라이브러리의 각 확장 명령은 매크로 EXT_COMMAND_METHOD 사용하여 클래스 EXT_CLASS 멤버로 선언됩니다. 예를 들어 extcmdanotherextcmd라는 두 개의 확장 명령이 있는 라이브러리는 다음과 같이 클래스 EXT_CLASS 정의할 수 있습니다.

class EXT_CLASS : public ExtExtension
{
public:
    EXT_COMMAND_METHOD(extcmd);
    EXT_COMMAND_METHOD(anotherextcmd);
}

EXT_COMMAND_METHOD 사용하여 선언된 확장 명령은 EXT_COMMAND 사용하여 정의해야 하며 라이브러리에서 내보내야 합니다.

EXT_DECLARE_GLOBALS 매크로는 EXT_CLASS 클래스의 단일 instance 만듭니다.

EXT_DECLARE_GLOBALS 매크로는 EngExtCpp 확장 프레임워크에서 사용할 일부 전역 변수를 설정합니다. 여기에는 EngExtCpp 확장 라이브러리를 나타내는 EXT_CLASS 클래스의 단일 instance 만드는 것이 포함됩니다.

EngExtCpp 확장 라이브러리로 컴파일할 원본 파일 중 하나에는 다음 명령이 포함되어야 합니다.

EXT_DECLARE_GLOBALS()

요구 사항

요구 사항
대상 플랫폼 데스크톱
머리글 engextcpp.hpp(Engextcpp.hpp 포함)

추가 정보

EXT_CLASS

EXT_COMMAND_METHOD

ExtExtension