Características da linguagem mql5, subtilezas e técnicas - página 226

 
Aleksey Vyazmikin #:
Você poderia me dizer como compilar todos os arquivos em um diretório?
No navegador, clique com o botão direito do mouse no diretório -> "Compile"
 
mktr8591 #:
No navegador, clique com o botão direito do mouse no diretório -> "Compile"

Fenomenal!

Muito obrigado!
 
Os comentários não relacionados a este tópico foram movidos para"Qualquer dúvida de iniciantes em MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos".
 

Determinação da estaticidade de uma matriz.

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


Aplicativo.

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

Determine a estaticidade da matriz.

ArrayIsDynamic não funciona?

 
trader6_1 #:

O ArrayIsDynamic não está funcionando?

Eu não sabia, obrigado.

 
O estudo mostrou que é possível obter aceleração livre com duas cordas.
#include <RadixSort.mqh> // https://www.mql5.com/en/code/38763

#define ArraySort RadixSort // Замена ArraySort на RadixSort.
Obviamente, se forem usadas matrizes unidimensionais.
 
Esse é um resultado interessante.
template <typename T>
void f() { Print(__FUNCTION__); }

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

Se houver muitos arquivos de inclusão e você precisar saber qual função no código-fonte montado é a mais alta, poderá usar esse 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>