Características del lenguaje mql5, sutilezas y técnicas - página 226

 
Aleksey Vyazmikin #:
¿Podrías decirme cómo compilar todos los archivos de un directorio?
En el navegador, haga clic con el botón derecho en el directorio -> "Compilar".
 
mktr8591 #:
En el navegador, haga clic con el botón derecho en el directorio -> "Compilar"

¡Fenomenal!

Gracias.
 
Los comentarios no relacionados con este tema han sido movidos a "Cualquier pregunta de principiantes en MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos".
 

Determinación de la estaticidad de un array.

// Определяет static/dynamic nonconst-массива.
template <typename T>
bool IsStatic( T &Array[] )
{
  T ArrayTmp[];
  
  return(!ArraySwap(Array, ArrayTmp) || !ArraySwap(Array, ArrayTmp));
}


Aplicación.

void OnStart()
{
  int Array1[1];
  int Array2[];
  
  Print(IsStatic(Array1)); // true
  Print(IsStatic(Array2)); // false
}
 
fxsaber #:

Determinar la estaticidad de la matriz.

¿ArrayIsDynamic no funciona?

 
trader6_1 #:

¿ArrayIsDynamic no funciona?

No lo sabía, gracias.

 
El estudio demostró que es posible lograr la aceleración libre con dos cadenas.
#include <RadixSort.mqh> // https://www.mql5.com/en/code/38763

#define ArraySort RadixSort // Замена ArraySort на RadixSort.
Por supuesto, si se utilizan matrices unidimensionales.
 
Es un resultado interesante.
template <typename T>
void f() { Print(__FUNCTION__); }

void OnStart()
{
//  f<int>(); // "void OnStart()"::f<int>
  
  {
    f<int>(); // "void OnStart()"::unnamed#2b753b62::f<int>
  }  
}
 
Limitación del compilador.
void OnStart()
{
  {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
  {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
  {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
  {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
  {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
  {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
  {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
  // Количество вложений, начиная с которого компилятор будет выдавать "'{' - program is too complex"
  }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
  }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
  }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
  }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
  }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
  }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
  }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
}
 
fxsaber #:
Resultado interesante.

Si hay muchos include-files y necesitas saber qué función del código fuente ensamblado es superior, puedes usar este método.

template <typename T>
void f() { Print(__FUNCTION__); }

#define  MACROS_INIT f<int>();

void f2()
{
  MACROS_INIT  
}

void f1()
{
  MACROS_INIT  
}

void OnStart()
{
  f1();
  f2();
}


// f2 прописана выше f1 в собранном исходнике.
"void f2()"::f<int>
"void f2()"::f<int>