Freigeben über


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.

Hinweis Alternativ zur Bereitstellung einer Zeichenfolge, die die Argumente beschreibt, können Sie die Zeichenfolge "{{custom}}" verwenden, um anzugeben, dass der Erweiterungsbefehl die Argumente selbst analysiert. Die GetRawArgStr-Methode kann verwendet werden, um das unformatierte Argument für die Analyse abzurufen.
 

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)

Weitere Informationen

EXT_CLASS

EXT_COMMAND_METHOD

ExtExtension