Compartilhar via


macro EXT_COMMAND (engextcpp.hpp)

A macro EXT_COMMAND é usada para definir um comando de extensão que foi declarado usando a macro EXT_COMMAND_METHOD .

Um comando de extensão é definido da seguinte maneira:

Sintaxe

void EXT_COMMAND(
   _Name,
   _Desc,
   _Args
);

Parâmetros

_Name

O nome do comando de extensão. Isso deve ser o mesmo que o parâmetro _Name usado para declarar o comando de extensão usando EXT_COMMAND_METHOD.

Como EXT_COMMAND é uma macro, _Name deve ser o nome nu do comando de extensão e não deve ser colocado entre aspas ou ser uma variável.

_Desc

Uma cadeia de caracteres que descreve o comando de extensão.

_Args

Uma cadeia de caracteres que descreve os argumentos esperados pelo comando de extensão. Para obter informações sobre como a cadeia de caracteres _Args é formatada, consulte Analisando argumentos de extensão.

Nota Como alternativa ao fornecimento de uma cadeia de caracteres que descreve os argumentos, você pode usar a cadeia de caracteres "{{custom}}" para indicar que o comando de extensão analisará os argumentos em si. O método GetRawArgStr pode ser usado para buscar o argumento bruto para análise.
 

Retornar valor

Nenhum

Comentários

O corpo do comando de extensão não usa argumentos. No entanto, como o comando de extensão é declarado como um método da classe EXT_CLASS , ele tem acesso a todos os membros da classe base ExtExtension , alguns dos quais são inicializados para a execução do comando de extensão.

A macro EXT_COMMAND_METHOD deve ser usada para declarar o comando de extensão. Assim como acontece com todas as declarações C++, a declaração EXT_COMMAND_METHOD deve aparecer nos arquivos de origem antes da definição de EXT_COMMAND.

Quando o mecanismo de depurador chama um método de comando de extensão, ele encapsula a chamada em um bloco try/except . Isso protege o mecanismo contra alguns tipos de bugs no código de extensão; mas, como as chamadas de extensão são executadas no mesmo thread que o mecanismo, elas ainda podem causar uma falha.

Essa macro também cria uma função chamada _Name (que chama o método definido pela macro). Para que o mecanismo chame a extensão, essa função deve ser exportada da DLL da biblioteca de extensões.

A constante EXT_CLASS especifica o nome da classe C++ que representa a biblioteca de extensões EngExtCpp.

EXT_CLASS

    #ifndef EXT_CLASS
    #define EXT_CLASS Extension
    #endif

O valor padrão de EXT_CLASS é Extension. Você pode alterar esse valor definindo EXT_CLASS antes de incluir o arquivo de cabeçalho Engextcpp.hpp.

Cada comando de extensão na biblioteca é declarado como membro da classe EXT_CLASS usando a macro EXT_COMMAND_METHOD. Por exemplo, uma biblioteca com dois comandos de extensão, extcmd e anotherextcmd, pode definir a classe EXT_CLASS da seguinte maneira:

class EXT_CLASS : public ExtExtension
{
public:
    EXT_COMMAND_METHOD(extcmd);
    EXT_COMMAND_METHOD(anotherextcmd);
}

Os comandos de extensão que foram declarados usando EXT_COMMAND_METHOD devem ser definidos usando EXT_COMMAND e devem ser exportados da biblioteca.

A macro EXT_DECLARE_GLOBALS cria uma única instância da classe EXT_CLASS.

A macro EXT_DECLARE_GLOBALS configura algumas variáveis globais para uso pela estrutura de extensão EngExtCpp. Isso inclui a criação de uma única instância da classe EXT_CLASS que representa a biblioteca de extensões EngExtCpp.

Um dos arquivos de origem a serem compilados na biblioteca de extensão EngExtCpp deve incluir o comando a seguir

EXT_DECLARE_GLOBALS()

Requisitos

Requisito Valor
Plataforma de Destino Área de Trabalho
Cabeçalho engextcpp.hpp (inclua Engextcpp.hpp)

Confira também

EXT_CLASS

EXT_COMMAND_METHOD

ExtExtension