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 區塊中。 這可保護引擎免於延伸模組程序代碼中的某些錯誤類型;但是,由於擴充功能呼叫是在與引擎相同的線程中執行,因此仍會導致它當機。
此宏也會建立稱為 _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) |