Erreurs, bugs, questions - page 2034

 
Vitaly Muzichenko:

Retirez le bouton d'accueil avec un tournevis :)


Non, ce n'est pas le problème. Cela se produit aussi bien lorsque MT5 est en arrière-plan que lorsque même le graphique est différent.

 

Je suppose que le problème est dû à ce champ étrange :

 //---- profit calculation parameters
   int               unknown2;

Ce n'était pas là dans l'original, d'où vient-il ?


Il s'agit de 4 octets pour l'alignement des adresses dans la structure.

le champ gtc_pendings précédent et le champ contract_size suivant sont lus correctement

 

Veuillez m'envoyer un lien vers le sujet : . sl : 0.00000 tp : 0.00000 failed [Hors guillemets]

 

Erreur de compilation

#define  MACRO1( X, Y )  X/**/##Y
#define  MACRO2( X, Y )  X##/**/ Y
void f5() {}
void OnStart()
{
        MACRO1( f, 5 )(); //нормально
        MACRO2( f, 5 )(); //error: 'f/' - undeclared identifier
}
 
A100:

Erreur lors de la compilation

J'aurais également interdit MACRO1.

 
fxsaber:

J'aurais également interdit MACRO1.

Sur la base de quoi ? Juste parce que tu en avais envie ?

Il existe une règle générale : les commentaires peuvent se trouver dans n'importe quelle partie du programme. Si vous n'utilisez pas de commentaires, cela ne signifie pas que les autres ne le font pas.

 
A100:

Sur la base de quoi ? Juste parce que tu en as envie ?

Il existe une règle générale : les commentaires peuvent se trouver dans n'importe quelle partie du programme. Ce n'est pas parce que vous n'utilisez pas de commentaires que les autres ne le font pas.

Parce que c'est aussi tordu que ça.

#define  MACRO(A,B)  A## \
                      B

void OnStart()
{
  int j2;
  int i = MACRO(j,2);
}


Au fait, ça ressemble à un bug.

#define  MACRO(A,B)  A##B

void OnStart()
{
  int i = MACRO(1,2); // '12' - undeclared identifier
}
 
fxsaber:

Parce que c'est aussi tordu que ça.

Au fait, ça ressemble à un bug.

Pas de véritable argument - il suffit de le dire. Dans votre esprit, cela ne peut pas être un bogue parce que vous ne pouvez pas l'écrire de cette façon - c'est comme remplacer les commentaires /**/ dans l'exemple ci-dessus par des espaces

#define  MACRO2( X, Y )  X## Y
 
A100:

Si vous n'avez pas d'argument solide, dites-le simplement. Ça ne peut pas être un bug dans votre esprit.

void OnStart()
{
  int j2;
  int i = j/**/2;
}

Pourquoi une macro ne provoquerait-elle pas une erreur à cet endroit ? Mais ne citez pas le C++ comme un argument, où quelqu'un a pensé pour les autres.

 
fxsaber:

Pourquoi une macro ne provoquerait-elle pas une erreur à ce stade ?

Parce que les entrées

#define  MACRO( X, Y )   X/**/##/**/ Y
#define  MACRO( X, Y )   X    ##     Y

est équivalent à l'entrée

#define  MACRO( X, Y )       X##Y
Pour moi, cela fait partie de la catégorie "ça n'a pas de sens" (les commentaires et les espaces non significatifs sont ignorés, alors quele commentaire /**/est équivalent à un espace). Peut-être que quelqu'un peut donner une explication scientifique