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 字符串格式的信息,请参阅 分析扩展参数。
返回值
无
备注
扩展命令的正文不采用任何参数。 但是,由于扩展命令声明为 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) |