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 块中。 这可以保护引擎免受扩展代码中某些类型的 bug 的影响;但是,由于扩展调用与引擎在同一线程中执行,因此它们仍可能导致其崩溃。

此宏还会创建一个名为 _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的成员。 例如,具有两个扩展命令 (extcmd另一个extcmd)的库可以定义类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 类的单个实例。

EXT_DECLARE_GLOBALS宏设置一些全局变量供 EngExtCpp 扩展框架使用。 这包括创建表示 EngExtCpp 扩展库的 EXT_CLASS 类的单个实例。

要编译到 EngExtCpp 扩展库的源文件之一应包括以下命令

EXT_DECLARE_GLOBALS()

要求

要求
目标平台 桌面
标头 engextcpp.hpp (包括 Engextcpp.hpp)

另请参阅

EXT_CLASS

EXT_COMMAND_METHOD

ExtExtension