Erreurs, bugs, questions - page 1654

 
Vitalii Ananev:

Le message d'erreur est toujours correct.

Au départ, je n'y ai pas prêté beaucoup d'attention, mais après l'avoir revu, il y a des arguments qui montrent que ce n'est pas correct. Et voici pourquoi : plus loin est le code conditionnel

int f()
{
        while ( true )
        {
//много строк c return, continue, без break
                return 0;
//много строк c return, continue, без break
                return 1;
//много строк c return, continue, без break
        }
        return Random(); //(*) написано по требованию MQL компилятора //строка 61
}

Ce qu'il faut mettre après while(true) {} se résume à ceci : "Nous ne serons jamais là de toute façon... return n'est nécessaire que formellement - pour que le compilateur dise OK... Donc - mettons une valeur aléatoire ici - return Random() ;".

Après un certain temps, nous avons fait quelques changements dans le code et maintenant nous avons besoin d'ajouter une pause dans le while.
Dans ce cas, le compilateur dira : "OK. Il y a du code après while(true) {}, ce qui signifie que le cas 'break' a déjà été prévu plus tôt et qu'il doit y avoir le même 'break' dans cet ensemble de lignes. Toutes les valeurs de retour étaient déjà prévues à l'époque - ne vous donnez pas la peine !
Et à la fin, nous obtiendrons une valeur aléatoire.

Mais s'il n'y avait pas de chaîne (*) au début, le compilateur dirait : "Error : No...". ...pas moyen... il n'y avait pas de rupture avant et nous devons retourner quelque chose de délibéré".

Il s'avère que la chaîne (*) n'est pas seulement excessive, mais qu'elle augmente également la probabilité d'erreurs difficiles à trouver.

 
A100:

Au début, je n'y ai pas prêté beaucoup d'attention, mais en le revoyant - il y avait un argument selon lequel ce n'était pas bien...

De plus, dans votre exemple, vous devriez normalement obtenir un avertissement "code inaccessible". Studio ne donne pas non plus cet avertissement, mais le compilateur de Bordeaux le faisait, je m'en souviens.
 
Sergei Vladimirov:
De plus, dans votre exemple, vous devriez normalement générer un avertissement "code inaccessible". Studio ne donne pas non plus un tel avertissement, mais le compilateur Borland le faisait, si je me souviens bien.

Bonne mémoire.

Et Borland ne donne pas d'avertissements pour des broutilles, ce qui prouve une fois de plus mes arguments...

 
A100:

Et Borland n'émet pas d'avertissement pour rien...

Je ne suis pas d'accord avec vous. :) Il me semble que c'est une bagatelle indigne d'attention. Il suffit de brancher return(0) et de continuer.

De plus, en MCL, il est préférable de toujours utiliser while( !IsStopped()) plutôt que while(true), auquel cas le retour après la boucle est déjà obligatoire.

 
Est-ce que quelqu'un d'autre a des problèmes avec l'optimisation des nuages (et pas seulement) ou est-ce que c'est juste ma "chance" qu'elle ait cessé de fonctionner avec la nouvelle version de MT5 ?
 
Dans mon éditeur, la liste des méthodes disponibles ne descend pas après le point. C'est très gênant pour moi. Comment puis-je le réparer ? Sur l'ancienne version, la liste se déroulait.
 
vinnipyx:
Dans mon éditeur, la liste des méthodes disponibles ne descend pas après le point. C'est très gênant pour moi. Comment puis-je le réparer ? Sur l'ancienne version, elle s'abaissait.
Même problème. Je dois commencer à taper de mémoire, et après quelques lettres, ça tombe, mais seulement à partir de ces lettres.
C'est terriblement gênant.
 

Que pensez-vous de ça ?

 
Vladimir Pastushak:

Que pensez-vous de ça ?

peut-être que c'est un constructeur de structure ? il est là de toute façon
 
coderex:
peut-être que c'est le constructeur de la structure ? il est là de toute façon
Pourquoi être si incertain ? Bien sûr que oui :)