- Inclusión de archivos fuente (#include)
- Visión general de las directivas de sustitución de macros
- Forma simple de #define
- Forma de #define como pseudofunción
- Operadores especiales '#' y '##' dentro de definiciones #define
- Anulación de la sustitución de macros (#undef)
- Constantes predefinidas del preprocesador
- Compilación condicional (#ifdef/#ifndef/#else/#endif)
- Propiedades generales del programa (#property)
Propiedades generales del programa (#property)
Mediante la directiva #property, un programador puede establecer algunas propiedades de un programa MQL. Algunas de estas propiedades son generales, es decir, aplicables a cualquier programa, y vamos a verlas aquí. Las propiedades restantes son típicas para tipos específicos de programas MQL5 y se discutirán en las secciones pertinentes de la Parte 5 cuando se describa la API de MQL5.
La directiva #property tiene el siguiente formato:
#property key value |
La clave es una de las propiedades enumeradas en la siguiente tabla, en la primera columna. En la segunda columna se especifica cómo se interpretará el valor.
Propiedad |
Valor |
---|---|
copyright |
Cadena con información sobre el titular de los derechos de autor |
link |
Cadena con un enlace al sitio del desarrollador |
version |
Cadena con el número de versión del programa (para MQL5 Market, debe estar en formato «X.Y», donde X e Y son números enteros correspondientes a los números de compilación mayor y menor). |
description |
Línea con la descripción del programa (se permiten varias directivas #description y sus contenidos se combinan) |
icon |
Cadena, ruta al archivo con el logotipo del programa en formato ICO |
stacksize |
Entero que especifica el tamaño de la pila en bytes (el valor por defecto es de 4 a 16 MB, dependiendo del tipo de programa y entorno, 1 MB = 1024*1024 bytes); si es necesario, el tamaño aumenta hasta 64 MB (máximo). |
Todas las propiedades de cadena mencionadas anteriormente son la fuente de información del cuadro de diálogo de propiedades del programa, que se abre al iniciarse. Sin embargo, para los scripts, este cuadro de diálogo no se muestra de manera predeterminada. Para cambiar este comportamiento debe especificar adicionalmente la directiva #property script_show_inputs. Además, la información sobre los derechos se muestra en una descripción emergente al pasar el cursor del ratón por encima del programa en el Navegador de MetaTrader 5.
Las propiedades copyright, link y version se han visto ya en todos los ejemplos anteriores de este libro.
El tamaño de pila stacksize es una recomendación: si el compilador encuentra variables locales (normalmente arrays) en el código fuente que superan el valor especificado, la pila se incrementará automáticamente durante la compilación, pero hasta un máximo de 64 MB. Si se supera el límite, el programa ni siquiera podrá iniciarse: en el registro (pestaña Log, y no Experts) aparecerá el error «Se ha superado el tamaño de pila de 64MB. Reduzca la memoria ocupada por variables locales».
Tenga en cuenta que estos análisis y prevenciones sólo tienen en cuenta una instantánea fija del programa en el momento del lanzamiento. En el caso de las llamadas a funciones recursivas, el consumo de memoria de la pila puede aumentar considerablemente y provocar un error de desbordamiento de pila, pero ya en la fase de ejecución del programa. Para obtener más información sobre la pila, véase la nota en Descripción de arrays.
Las directivas #property sólo funcionan en el archivo mq5 compilado, y se ignoran en todos los incluidos con #include.