- Declaración de constante (#define)
- Propiedades de programas (#property)
- Inclusión de archivos (#include)
- Importación de funciones (#import)
- Compilación condicional (#ifdef, #ifndef, #else, #endif)
Compilación condicional (#ifdef, #ifndef, #else, #endif)
El compilador usa las directivas del preprocesador para procesar de manera preliminar el código fuente antes de proceder a su compilación. La directiva comienza siempre con el símbolo # (almohadilla), por este motivo, el compilador prohíbe utilizar este símbolo en los nombres de las variables, funciones, etcétera.
Cada directiva se describe con una entrada aparte y es válida hasta el salto de línea. No es posible usar varias directivas en una sola entrada. Si la entrada de la directiva es demasiado grande, podremos dividirla en varias líneas con la ayuda de la barra invertida '\', en este caso, la línea siguiente se considerará una continuación de la entrada de la directiva.
Las directivas de compilación condicional del preprocesador permiten compilar u omitir una parte del programa dependiendo del cumplimiento de una cierta condición.
Esta condición puede tomar una de las siguientes formas.
#ifdef identifier
|
#ifndef identifier
|
Después de cualquier directiva de compilación condicional puede ir cualquier número de líneas que posiblemente contengan la directiva #else y se terminan con #endif. Si la condición a comprobar es cierta, las líneas entre #else y #endif se ignoran. Si la condición a comprobar no se cumple, se ignoran todas las líneas entre la comprobación y la directiva #else (si ésta no existe, entre la comprobación y la directiva #endif).
Ejemplo:
#ifndef TestMode
|
En función del tipo del programa y el modo de compilación, las macros estándar se definen de la siguiente manera:
La macro __MQL5__ se define cuando se compila *.mq5, la macro __MQL4__ se define cuando se compila *.mq4.
La macro _DEBUG se define cuando se compila en modo de depuración.
La macro _RELEASE se define cuando se compila en modo de realización.
Ejemplo:
//+------------------------------------------------------------------+
|