Caratteristiche del linguaggio mql5, sottigliezze e tecniche - pagina 150

 
Denis Kirichenko:

Ce n'è uno. Ho riportato solo una voce del registro. Quello completo è così:

Allora non capisco da dove viene l'ultima riga.

 
fxsaber:

Allora non capisco da dove viene l'ultima riga.

Dopo aver selezionato il menu contestuale "Modifica", il navigatore non riesce a trovare l'originale mq5 nello stesso percorso di ex5.

Perché ex5 è stato spostato nella cartella scripts da Shared Projects, dove vive mq5

Correggere. Facciamo la stessa ricerca intelligente delle impostazioni del tester

 
fxsaber:

Grazie, buona regola. Sono diventato vittima della mia stessa incompetenza. Davvero, c'è bisogno di qualche altra regola per un caso così ovvio.


Forse per entrambi i casi Attenzione intelligente da fare?

Ci deve essere un errore di compilazione qui.
 
Alexey Navoykov:
Ci deve essere un errore di compilazione qui.
Oh, ma dai! Su quali basi? La cancellazione non cambia il valore del puntatore, quindi non c'è nemmeno una violazione della costanza. Quindi, non ho lamentele con il compilatore qui, tutto è chiaro.
 
Vladimir Simakov:
Oh, ma dai! Su quali basi? La cancellazione non cambia il valore del puntatore, quindi non c'è nemmeno una violazione della costanza. Quindi, non ho lamentele sul compilatore qui.
Sto parlando del secondo campione
 
Alexey Navoykov:
Stiamo parlando del secondo esempio
void f( const int i )
{
  static const int j = i;
  
  Print(j);
}

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

La variabile statica viene inizializzata alla prima chiamata.
 
fxsaber:

La variabile statica è inizializzata alla prima chiamata.
Sei sicuro? Dovrò testarlo domani. La documentazione dice: levariabili statiche esistono a runtime e sono inizializzate una volta prima della chiamata della funzione specializzataOnInit(). Se non vengono specificati valori iniziali, le variabili statiche di classe di memoria prendono valori iniziali nulli.

Se scrivi come fai tu, allora lo scrittore del bacino ha un bug feroce.
 
Vladimir Simakov:
...Se come scrivi tu, allora lo scrittore del bacino ha un brutto difetto.
L'autore del documento ha esattamente ragione. Le variabili statiche non possono essere inizializzate con valori locali.
Se questo davvero compila in Mql, allora questo bug deve essersi verificato quando si è fissato l'ordine diinizializzazione delle variabili statiche un anno fa.
 
Alexey Navoykov:
Lo scrittore del porto ha esattamente ragione. Le variabili statiche non possono essere inizializzate con valori locali.
Se ora compila in Mql, allora deve essere un bug dovuto alla correzione dell'inizializzazione statica delle variabili un anno fa.
Oppure il codice è stato convertito in C++ standard, e in questo caso si tratta di un bug nei documenti. Ora metto la testa a posto, bevo il caffè e controllo.
 

Sviluppatori. È necessaria una spiegazione. A quale credere? I documenti o l'implementazione? Finora abbiamo un comportamento indefinito.

@fxsaber, non ti consiglio di usarlo prima delle spiegazioni ufficiali, nel caso in cui lo prendano e lo sistemino.

Motivazione: