EXT_COMMAND-Makro (engextcpp.hpp)
Das makro EXT_COMMAND wird verwendet, um einen Erweiterungsbefehl zu definieren, der mithilfe des Makros EXT_COMMAND_METHOD deklariert wurde.
Ein Erweiterungsbefehl wird wie folgt definiert:
Syntax
void EXT_COMMAND(
_Name,
_Desc,
_Args
);
Parameter
_Name
Der Name des Erweiterungsbefehls. Dies muss mit dem parameter _Name identisch sein, der zum Deklarieren des Erweiterungsbefehls mithilfe von EXT_COMMAND_METHOD verwendet wird.
Da EXT_COMMAND ein Makro ist, muss _Name der bloße Name des Erweiterungsbefehls sein und darf nicht in Anführungszeichen eingeschlossen oder eine Variable sein.
_Desc
Eine Zeichenfolge, die den Erweiterungsbefehl beschreibt.
_Args
Eine Zeichenfolge, die die Argumente beschreibt, die vom Erweiterungsbefehl erwartet werden. Informationen zum Formatieren der _Args Zeichenfolge finden Sie unter Analysieren von Erweiterungsargumenten.
Rückgabewert
Keine
Bemerkungen
Der Text des Erweiterungsbefehls akzeptiert keine Argumente. Da der Erweiterungsbefehl jedoch als Methode der EXT_CLASS Klasse deklariert wird, hat er Zugriff auf alle Member der ExtExtension-Basisklasse , von denen einige für die Ausführung des Erweiterungsbefehls initialisiert werden.
Das Makro EXT_COMMAND_METHOD sollte verwendet werden, um den Erweiterungsbefehl zu deklarieren. Wie bei allen C++-Deklarationen sollte die EXT_COMMAND_METHOD-Deklaration in den Quelldateien vor der definition EXT_COMMAND angezeigt werden.
Wenn die Debugger-Engine eine Erweiterungsbefehlsmethode aufruft, umschließt sie den Aufruf in einen try/except-Block . Dies schützt die Engine vor einigen Arten von Fehlern im Erweiterungscode. Da die Erweiterungsaufrufe jedoch im selben Thread wie die Engine ausgeführt werden, können sie dennoch zu einem Absturz führen.
Dieses Makro erstellt auch eine Funktion namens _Name (die die vom Makro definierte Methode aufruft). Damit die Engine die Erweiterung aufrufen kann, muss diese Funktion aus der Erweiterungsbibliotheks-DLL exportiert werden.
Die EXT_CLASS-Konstante gibt den Namen der C++-Klasse an, die die EngExtCpp-Erweiterungsbibliothek darstellt.
EXT_CLASS
#ifndef EXT_CLASS
#define EXT_CLASS Extension
#endif
Der Standardwert von EXT_CLASS ist Extension. Sie können diesen Wert ändern, indem Sie EXT_CLASS definieren, bevor Sie die Headerdatei Engextcpp.hpp einschließen.
Jeder Erweiterungsbefehl in der Bibliothek wird mithilfe des Makros EXT_COMMAND_METHOD als Member der Klasse EXT_CLASS deklariert. Beispielsweise könnte eine Bibliothek mit zwei Erweiterungsbefehlen, extcmd und anotherextcmd, die Klasse EXT_CLASS wie folgt definieren:
class EXT_CLASS : public ExtExtension
{
public:
EXT_COMMAND_METHOD(extcmd);
EXT_COMMAND_METHOD(anotherextcmd);
}
Erweiterungsbefehle, die mithilfe von EXT_COMMAND_METHOD deklariert wurden, sollten mithilfe von EXT_COMMAND definiert und aus der Bibliothek exportiert werden.
Das EXT_DECLARE_GLOBALS-Makro erstellt eine einzelne instance der EXT_CLASS-Klasse.
Das EXT_DECLARE_GLOBALS Makro richtet einige globale Variablen für die Verwendung durch das EngExtCpp-Erweiterungsframework ein. Dazu gehört das Erstellen einer einzelnen instance der EXT_CLASS-Klasse, die die EngExtCpp-Erweiterungsbibliothek darstellt.
Eine der Quelldateien, die in die EngExtCpp-Erweiterungsbibliothek kompiliert werden sollen, sollte den folgenden Befehl enthalten.
EXT_DECLARE_GLOBALS()
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Desktop |
Kopfzeile | engextcpp.hpp (include Engextcpp.hpp) |