Caractéristiques du langage mql5, subtilités et techniques - page 150

 
Denis Kirichenko:

Il y en a un. Je n'ai fait remonter qu'une seule entrée du journal. Le plein est comme ça :

Alors je ne comprends pas d'où vient la dernière ligne.

 
fxsaber:

Alors je ne comprends pas d'où vient la dernière ligne.

Après avoir sélectionné le menu contextuel "Edit", le navigateur ne trouve pas l'original mq5 dans le même chemin que ex5.

Parce que ex5 a été déplacé vers le dossier scripts à partir de Shared Projects, où se trouve mq5.

Fixe. Faisons la même recherche intelligente que dans les paramètres du testeur

 
fxsaber:

Merci, bonne règle. Je suis devenu une victime de ma propre incompétence. Vraiment, il faut un peu plus de règles pour un cas aussi évident.


Peut-être pour les deux cas Avertissement intelligent à faire ?

Il doit y avoir une erreur de compilation ici.
 
Alexey Navoykov:
Il doit y avoir une erreur de compilation ici.
Oh, allez. Pour quels motifs ? delete ne change pas la valeur du pointeur, il n'y a donc pas non plus de violation de constance. Donc, je n'ai pas à me plaindre au compilateur ici, tout est clair.
 
Vladimir Simakov:
Oh, allez. Pour quels motifs ? delete ne change pas la valeur du pointeur, il n'y a donc pas non plus de violation de constance. Donc, je n'ai pas à me plaindre du compilateur ici.
Je parle du deuxième échantillon
 
Alexey Navoykov:
Nous parlons du deuxième exemple
void f( const int i )
{
  static const int j = i;
  
  Print(j);
}

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

La variable statique est initialisée lors du premier appel.
 
fxsaber:

La variable statique est initialisée lors du premier appel.
Vous êtes sûr ? Je vais devoir le tester demain. La documentation dit :Les variables statiques existent au moment de l'exécution et sont initialisées une fois avant l'appel de la fonction spécialiséeOnInit(). Si aucune valeur initiale n'est spécifiée, les variables de classe de mémoire statique prennent une valeur initiale nulle.

Si vous écrivez comme vous le faites, c'est que l'écrivain de quai a une bestiole féroce.
 
Vladimir Simakov:
...Si comme vous l'écrivez, alors l'écrivain du dock a un mauvais bug.
L'auteur du doc a tout à fait raison. Les variables statiques ne peuvent pas être initialisées avec des valeurs locales.
Si cela compile réellement en Mql, alors ce bug a dû se produire lors de la correction de l'ordre d'initialisation des variables statiques il y a un an.
 
Alexey Navoykov:
L'auteur du dock a tout à fait raison. Les variables statiques ne peuvent pas être initialisées avec des valeurs locales.
S'il compile maintenant dans Mql, alors ce doit être un bug dû à la correction de l'initialisation des variables statiques il y a un an.
Ou bien le code a été converti au standard C++, et dans ce cas il s'agit d'un bug dans la documentation. Maintenant, je vais rassembler ma tête, boire du café et vérifier.
 

Les développeurs. Une explication est nécessaire. Lequel croire ? Les documents ou la mise en œuvre ? Nous avons un comportement indéfini jusqu'à présent.

@fxsaber, je ne vous conseille pas de l'utiliser avant les explications officielles, au cas où ils le prennent et le corrigent.