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

 
Denis Kirichenko:

Existe um. Só mencionei uma entrada do diário de bordo. O completo é assim:

Então não compreendo de onde vem a última linha.

 
fxsaber:

Então não compreendo de onde vem a última linha.

Após seleccionar o menu de contexto "Editar", o navegador não consegue encontrar o mq5 original no mesmo caminho que o ex5.

Porque a ex5 foi movida para a pasta de scripts de Projectos Partilhados, onde vive a mq5

Consertar. Vamos fazer a mesma pesquisa inteligente que nas definições do testador

 
fxsaber:

Obrigado, boa regra. Tornei-me uma vítima da minha própria incompetência. Realmente, é necessária mais alguma regra para um caso tão mais óbvio.


Talvez para ambos os casos Alerta inteligente a fazer?

Deve haver aqui um erro de compilação.
 
Alexey Navoykov:
Deve haver aqui um erro de compilação.
Ora, vá lá. Com que fundamentos? apagar não altera o valor do ponteiro, pelo que também não há violação de constância. Portanto, não tenho queixas para o compilador aqui, tudo é claro.
 
Vladimir Simakov:
Ora, vá lá. Com que fundamentos? apagar não altera o valor do ponteiro, pelo que também não há violação de constância. Portanto, não tenho aqui queixas sobre o compilador.
Estou a falar da segunda amostra
 
Alexey Navoykov:
Estamos a falar do segundo exemplo
void f( const int i )
{
  static const int j = i;
  
  Print(j);
}

void OnStart()
{
  f(1); // 1
  f(2); // 1
}

A variável estática é rubricada na primeira chamada.
 
fxsaber:

A variável estática é rubricada na primeira chamada.
Tem a certeza? Terei de o testar amanhã. Os documentos dizem:as variáveis estáticas existem em tempo de execução e são inicializadas uma vez antes da chamada da função especializadaOnInit(). Se não forem especificados valores iniciais, as variáveis da classe de memória estática tomam valores iniciais zero.

Se está a escrever como escreve, então há um insecto feroz por detrás do escritor de documentos.
 
Vladimir Simakov:
...Se ao escrever, então o estivador tem um mau bug.
O doc writer tem toda a razão. As variáveis estáticas não podem ser inicializadas com valores locais.
Se isto realmente se compila em Mql, então este bug deve ter ocorrido ao fixar a ordem deinicialização das variáveis estáticas, o que foi feito há um ano atrás.
 
Alexey Navoykov:
O estivador tem toda a razão. As variáveis estáticas não podem ser inicializadas com valores locais.
Se compila agora em Mql, então deve ser um bug da correcção da inicialização da variável estática há um ano atrás.
Ou o código foi convertido para o padrão C++, e neste caso é um erro nos documentos. Agora, vou juntar a minha cabeça, beber café e verificá-lo.
 

Desenvolvedores. É necessária uma explicação. Em que acreditar? Os documentos ou a implementação? Até agora, temos um comportamento indefinido.

@fxsaber, não o aconselho a usá-lo antes das explicações oficiais, no caso de o tomarem e o consertarem.