- Substituição de Macro (#define)
- Propriedades de Programa (#property)
- Incluindo Arquivos (#include)
- Importando Funções (#import)
- Conditional Compilation (#ifdef, #ifndef, #else, #endif)
Conditional Compilation (#ifdef, #ifndef, #else, #endif)
As diretivas do pré-processador são usadas pelo do compilador para pré-processamento do código fonte antes de sua compilação. A diretiva sempre começa com o # (jogo da velha), por isso o compilador proíbe o uso deste símbolo nos nomes das variáveis, funções, etc.
Cada diretiva é descrita por um registro separado e opera antes da mudança de linha. Não se podem utilizar várias diretivas num só registro. Se o registro da diretiva for muito grande, ele pode ser dividido em várias linhas usando a barra invertida '\', neste caso, a próxima linha é considerada uma continuação do registro da diretiva.
As diretrizes de compilação condicional do pré-processador permitem compilar ou pular uma parte do programa dependendo do cumprimento de uma determinada condição.
Essa condição pode assumir uma das seguintes formas.
#ifdef identifier
|
#ifndef identifier
|
Qualquer uma das diretrizes de compilação condicional pode ser seguida por qualquer número de linhas possivelmente contendo a diretiva #else e terminando com #endif. Se a condição verificada for verdadeira, as linhas entre #else e #endif serão ignoradas. Se a condição verificada não for cumprida, todas as linhas entre a verificação e a diretiva #else (ou a diretiva #endif se a primeira estiver ausente) serão ignoradas.
Exemplo:
#ifndef TestMode
|
Dependendo do tipo de programa e do modo de compilação, os padrões macros são definidos da seguinte forma:
__MQL5__ macro é definido ao compilar o arquivo *.mq5, __MQL4__ macro é definido ao compilar o *.mq4.
_DEBUG macro é definido ao compilar o modo de depuração.
_RELEASE macro É definido ao compilar no modo de liberação.
Exemplo:
//+------------------------------------------------------------------+
|