Bogue de compilation avec le paramètre template = void* - page 9

 
A100:

L'avertissement a été émis uniquement parce que les priorités sont différentes dans MQL5. Pas parce que ...

Donc, les développeurs ont corrigé leurs bugs précédents... pas plus que ça

Y a-t-il un problème de prioritésici aussi ?

 
fxsaber:

Y a-t-il un problème de prioritésici aussi ?

Ils sont différents dans MQL5 et l'ancien MQL4... Je pensais que tu l ' avais déjà lu.
 
A100:
Ils sont différents dans MQL5 et l'ancien MQL4... Je pensais que tu l ' avais déjà lu.

Une liste des différences, s'il vous plaît.

 
fxsaber:

Une liste des différences, s'il vous plaît.

Vous ne pouvez pas le faire vous-même ? Cliquez sur les liens ci-dessus ?

MQL5 et nouveau MQL4

Opération

Description

Ordre d'exécution

&&

Opération logique AND

De gauche à droite

||

Opération logique OR

De gauche à droite


Ancien MQL4

||

Opération logique OR

De gauche à droite

&&

Opération logique AND

De gauche à droite

Plus la priorité d'un groupe d'opérations est élevée, plus il est placé haut dans le tableau.

Votre exemple :

bool a = r && g || b;
 
Ilya Malev:
Il serait plus pratique que le compilateur propose d'organiser automatiquement les parenthèses "correctement", comme le fait Excel lorsque vous écrivez une formule incomplète.

En général, il existe des langages de programmation spéciaux pour les amateurs de crochets - LISP. Voici un extrait d'un moteur de recherche : "Ce style est un peu comme le langage LISP. Mais en LISP, le grand nombre de parenthèses est dû à l'absence de hiérarchisation des opérations."

 
A100:

En général, pour les amateurs de parenthèses, il existe des langages de programmation spéciaux - Simula, LISP. Voici un extrait d'un moteur de recherche : "Ce style est un peu comme le langage LISP. Mais en LISP, le grand nombre de parenthèses est dû à l'absence de priorité des opérations."

C'est bien que le compilateur prévienne de quelque chose que les développeurs changent soudainement dans la logique du passé. Si les mêmes avertissements avaient été donnés sur les appels de fonctions comme ArrayMaximum après la migration du code depuis mql4, j'aurais économisé beaucoup de temps et de nerfs à mon époque (ils échangeaient librement les paramètres d'un seul type, si vous ne le savez pas).

 
Ilya Malev:

Il est bon que le compilateur vous avertisse de quelque chose que les développeurs changent soudainement dans la logique du passé.

Ça ne me dérange pas. Laissez ces avertissements dans l'ancien MQL4.

 
Quant à "les programmeurs normaux se souviennent des priorités des opérations C++ comme la table de multiplication", personnellement je ne m'en suis plus ou moins souvenu qu'après avoir commencé à surcharger les opérateurs, et avant cela je ne l'ai jamais ouvert du tout. Tous les codeurs mql ne sont pas des pros, et les développeurs du terminal et du langage pour les traders doivent en tenir compte.
 
Ilya Malev:

Si les mêmes avertissements étaient émis sur les appels de fonctions comme ArrayMaximum après avoir transféré le code de mql4, j'aurais économisé beaucoup de temps et de nerfs à mon époque (ils ont librement échangé les mêmes paramètres, si vous n'êtes pas au courant)

Eh bien, ils ne sont pas distribués. C'est ce qui rend le codage sélectif si mauvais - il crée l'illusion que le compilateur s'occupera de tout (donc c'est tout ou rien).

 
Ilya Malev:
Tous les codeurs mql ne sont pas des pros, et les développeurs du terminal et du langage pour les traders doivent en tenir compte.

Exactement ! Jamais un pro, de tels avertissements m'ont aidé 100 fois.