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

 

Seulement des crochets. Seulement les ratons laveurs. Hardcore seulement !!!11111

#define    cmp(D1,D2)          \
  ((t_flp(D1)||t_flp(D2))?(((D1)>=(D2))?(((D1)-(D2))>=EPS(D1)?1:0):(((D2)-(D1))>=EPS(D1)?-1:0)):(((D1)>(D2))?1:(((D1)<(D2))?-1:0)))
 
Ilya Malev:

Seulement des crochets. Seulement les ratons laveurs. Hardcore seulement !!!11111

Ce n'est que dans #define que le compilateur ne génère pas les avertissements correspondants, etil serait bien aussi que

Au fait, les parenthèses sont inutiles ici.

(((D1)<(D2))?-1:0)
 

Dieu interdit d'utiliser des parenthèses dans les macros. Vous ne pouvez pas vous en passer là-bas.

Igor Makanu:

car il ne changera pas lors du portage du code vers d'autres langages de programmation

Dans d'autres langages (par exemple BASIC ou Pascal), vos opérateurs binaires et conditionnels ne sont pas valides, il s'agit donc d'un problème parasite et le fait que MQ s'amuse avec les priorités dans le passé n'est pas un indicateur).

 
A100:

Seulement dans #define le compilateur ne génère pas les avertissements correspondants, ce quiserait bien, aussi

Mais il faut d'abord l'utiliser dans un code spécifique, et il donne un indice tel qu'il doit être placé non pas à un endroit qu'il considère comme suspect, mais à un endroit où dans le code est écrit le symbole de la définition. Je pense que c'est une sorte d'indication pour garder vos coons et ne pas abuser de leur préprocesseur).

 
Ilya Malev:
À propos, n'utilisez-vous pas d'espaces dans votre code par principe ? Voici un autre exemple. Je ne sais pas comment vous pouvez donner un sens à un tel fouillis de caractères si tout le code est dans ce style.
 
Alexey Navoykov:
Au fait, n'utilisez-vous pas d'espaces dans votre code ? Voici un autre exemple. Je ne sais pas comment on peut comprendre un tel amas de caractères si tout le code est dans ce style.

Dans les définitions, oui, je ne les utilise pas, car je ne les considère pas comme du code, ce sont juste des macros, elles doivent être aussi compactes que possible. Et cet exemple a été spécialement choisi comme étant le plus orienté vers les ratons laveurs de toute la bibliothèque ;))

Quant à l'exemple, écrit en 2 minutes, l'indentation est là, où je voulais montrer la partie importante - les appels del dans OnStart et le reste était secondaire et il est plus important que le post n'occupe pas une demi-page, que de garder l'indentation.

 
Ilya Malev:

... ne sont que des macros, elles doivent être aussi compactes que possible.

... Il est plus important que le billet ne prenne pas la moitié d'une page que d'être en retrait.

Je ne comprends pas votre logique et vos priorités.)
 
A100:

Pourquoi ne pas les mettre en place vous-même ? Je n'ai pas pris la peine de regarder votre profil :

C'est censé être comme ça :

Vous déclarez une chose, mais vous faites exactement le contraire.

Si même les adeptes des parenthèses ne les mettent pas eux-mêmes, c'est la meilleure preuve de leur inutilité

Hélas, mon code, que vous avez cité en exemple, a été écrit par moi il y a longtemps, 4 ans je crois.

Mon post était sur le fait de souhaiter l'absence d'ambiguïté dans les expressions arithmétiques/logiques et les parenthèses permettent d'y parvenir, maintenant j'essaie généralement d'écrire des conditions non ambiguës, c'est plus facile pour moi, et il est impossible de faire une erreur, vous avez cité un fragment de code où je calculais des ordres virtuels, maintenant j'écris ce problème de cette façon :

allorders = OrdersCount(all_buy,all_sell);
if(allorders==0){
   // если торговля одним ордером выставим ордер и выход
   if(MA1>MA2) { BUY();  return;}
   if(MA1<MA2) { SELL(); return;}
.......   

// или так
   if(all_buy==0){
      if(MA1>MA2) { BUY();  return;}
   }
   if(all_sell==0){
      if(MA1<MA2) { SELL();  return;}
   }

//ф-ция подсчета ордеров
int OrdersCount(int &buy_,int &sell_)
{
   buy_=0; sell_ =0;
.............   
   return(buy_+sell_);

}

Je ne suis pas un adepte des parenthèses, mais je suis partisan d'un algorithme à valeur unique, qui se lira de la même manière qu'une stratégie de trading

;)

PS : Je ne participe plus à ce refrain, même si@fxsaber a écrit que les parenthèses permettent d'éviter les erreurs, alors il n'y a rien à discuter, car il sait écrire des codes aussi compacts, il n'y en a que deux fois plus sur ce forum, la brièveté est la sœur du talent - il s'agit de@fxsaber


Ilya Malev:

Seulement des crochets. Seulement les ratons laveurs. Seulement hardcore !!!11111

Et j'ai alors compris pourquoi les métacquotes ne donnent pas de pointeurs à part entière dans MQL..... imaginé vos macros et votre code en passant des pointeurs, en déréférençant des pointeurs dans des fonctions... le hardcore est très léger, et après le BDSM ? ))))

 
Igor Makanu:

Car il est capable d'écrire des codes aussi compacts, il n'y a qu'une poignée de personnes de ce genre sur ce forum, la brièveté est la sœur du talent - il s'agit de@fxsaber

(Les parenthèses empilées sur les parenthèses sont-elles la sœur du talent ? ) Eh bien, chacun a droit à son opinion.
 
Alexey Navoykov:
(Est-ce que c'est la sœur du talent d'être pleine de parenthèses inutiles ? ) Mais chacun a droit à son opinion.

ils ne sont pas superflus ! ils aident à lire la logique de la formation de l'expression !

Le nombre de parenthèses affecte-t-il la vitesse ? - à moins que cela n'affecte la vitesse de frappe, mais personne ne le regarde..... le nombre de parenthèses que chaque utilisateur utilise en une journée sur internet est un exemple frappant )))).

Raison: