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

 
A100:

Si je ne l'ai pas énoncé correctement - corrigez-moi s'il vous plaît - j'ai énoncé mon concept brièvement et sans ambiguïté là où des avertissements sur les parenthèses sont nécessaires.

C'est faux. L'utilisation des parenthèses réduit la probabilité d'erreurs.

Un avertissement est un message indiquant qu'un nombre relativement important de codeurs commettent des erreurs en écrivant de cette manière : le résultat n'est pas celui qu'ils avaient prévu. Cela s'applique à tous les avertissements, pas seulement aux parenthèses.

 
fxsaber:

Faux. L'utilisation de parenthèses réduit les risques d'erreur.

Un avertissement est un message indiquant qu'un nombre relativement important de codeurs font des erreurs lorsqu'ils écrivent de cette manière : le résultat n'est pas celui qu'ils voulaient. Cela s'applique à tous les avertissements, pas seulement aux parenthèses.

Il ne s'agit pas d'un concept, mais d'un raisonnement général.

La question a un caractère pratique et n'est pas de nature abstraite mais très concrète : où avez-vous besoin de parenthèses ? Partout ? Ou de manière sélective ? Alors qui détermine la sélection ? Le fxsaber ? Pouvez-vous la formuler sans ambiguïté ? Afin que ce concept puisse être implémenté dans le compilateur

Je l' ai formulé comme suit : "seulement là où on ne peut pas faire sans".

 
pavlick_:

ZS : mais si je le faisais, je le ferais de manière aussi similaire que possible à la bibliothèque standard plus (noms, comportement, etc.), donc pas de choix pour moi. Pourquoi construire une autre spécification quand tout est déjà écrit ?

Si je le faisais, les tableaux d'objets et de pointeurs ne sont pas du tout nécessaires dans mql. Les listes dynamiques et le bouclage pour chacune d'entre elles permettent de résoudre 99% des tâches de trading de la manière la plus compacte et la plus pratique. Vous n'avez même pas besoin d'une classe de liste distincte. Toutes ces fonctionnalités supplémentaires sont nécessaires à une échelle plus grande que celle que nous avons habituellement ici...

 
A100: Pouvez-vous articuler sans ambiguïté ?

où ils facilitent la compréhension du code

 
TheXpert:

où ils permettent de mieux comprendre le code

Afin que le concept puisse être mis en œuvre dans le compilateur. Personne n'interdit les parenthèses inutiles. La question porte sur les avertissements inutiles

 
A100:

Il s'agit d'une question pratique, non pas abstraite, mais concrète : où a-t-on besoin de parenthèses ? Partout ? Ou de manière sélective ? Alors qui détermine la sélection ? Le fxsaber ? Pouvez-vous l'articuler sans ambiguïté ?

La question était de savoir si le compilateur MT4 est correct.

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

Nouvelle version de la plate-forme MetaTrader 5 build 1930 : fenêtres graphiques flottantes et bibliothèques .Net dans MQL5

fxsaber, 2018.12.11 19:44

#property strict
   // from MT5: Canvas.mqh
   uint Pixel = (r<<16|g<<8|b<<0|255<<24) &0xffffffff; //check operator precedence for possible error; use parentheses to clarify precedence


C'est vrai dans ce cas. Les parenthèses ne sont pas nécessaires ici, mais souhaitables, car il est probable qu'il y ait une erreur. C'est sur la base de ces probabilités que le compilateur émet des avertissements de toute nature. Ils ont été inventés pour une raison.

 
fxsaber:

Dans ce cas, il a raison.

Des exemples spécifiques ne sont pas nécessaires à ce stade (vous pouvez en donner autant que vous le souhaitez). Ce dont nous avons besoin, c'est d'un concept unique qui peut être mis en œuvre dans le compilateur (lorsque des avertissements doivent être émis si des parenthèses sont manquantes).

 
A100:

Vous n'avez pas besoin d'exemples précis à ce stade (vous pouvez en donner autant que vous le souhaitez). Ce qu'il faut, c'est un concept qui peut être mis en œuvre dans le compilateur.

C'est déjà assez bien implémenté. C'est juste que MT4 s'est avéré être plus intelligent.

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

Nouvelle version de MetaTrader 5 build 1930 : fenêtre graphique flottante et bibliothèque .Net dans MQL5

fxsaber, 2018.12.11 20:22

Ce ne sont pas du tout des messages redondants. Il y a toujours des priorités.

bool a = r && g || b; // check operator precedence for possible error; use parentheses to clarify precedence

Le compilateur avertit déjà les fives d'une erreur possible également.

 
fxsaber:

C'est déjà assez bien implémenté. C'est juste que MT4 s'est avéré être plus intelligent.

Cet avertissement a été donné uniquement parce que MQL5 a des priorités différentes. Pas parce que.. .

C'est-à-dire, le concept: "Les avertissements sont probablement nécessaires dans les endroits où MQL4 était différent auparavant". Ainsi, les développeurs ont réparé leurs erreurs précédentes. pas plus que ça

 
Il serait plus pratique que le compilateur propose de disposer automatiquement les parenthèses "correctement", comme le fait Excel lorsque vous écrivez une formule incomplète.
Raison: