Erreurs, bugs, questions - page 2338

 
#define  M (a ? 1 : 0)

struct S {
   int a;
};

void OnStart()
{
   S s;
#define  a s.a
   Alert(M);
}

Impossible de compiler, erreurs :
a' - trop complexe, simplifier la macro temp.mq5 24 10
s' - membre de la structure non défini temp.mq5 24 10
...

C'est-à-dire que le préprocesseur semble essayer de développer récursivement a.

 

Je me demande si c'est le courtier qui fait ça ou si c'est un bug dans mt 4 ?


 
A100:
Avant d'écrire ceci - je n'étais pas paresseux - j'ai vérifié dans MetaTrader 4 build 765x32 (MetaEditor build 1035x32) - tout est identique. Et nous sommes en 2014 ( !)

Oui, j'ai encore eu tort.

 
Vladimir Pastushak:

Je me demande si c'est le courtier qui fait ça ou si c'est un bug de mt 4 ?

Enregistrez un vrai signal dessus, s'il passe à travers, c'est un DC. Il existe des comptes centraux qui s'affichent normalement (ce que beaucoup de signaleurs utilisent), mais vous avez une option plus cool :))).

 

J'ai commencé à exécuter beaucoup de code multiplateforme sur MT4. Il n'y a pas de débogueur ? Je l'exécute sur F5, mais ça ne ralentit nulle part.

Jusqu'à présent, je dois faire du débogage sous 5, ce qui est une béquille dans certains cas.

 

fxsaber: Стал много запускать кроссплатформенный код на MT4. Там отладчика что ли нет? Запускаю по F5, но нигде не тормозится.Пока приходится отладкой заниматься под пятеркой, что костыльно в некоторых случаях.

le point d'arrêt dans MT4 est exactement déclenché, à gauche sur le champ dans le méta-éditeur cliquez sur


 
Igor Makanu:

le point d'arrêt dans MT4 fonctionne exactement, sur le champ gauche dans le méta-éditeur cliquez sur

Cours.

 
fxsaber:

Cours.

J'ai vérifié, oui vous avez raison - le point d'arrêt ne fonctionne pas dans MT4 lorsque l'on teste sur des données historiques, j'ai vérifié sur l'EA standard Moving Average - cela ne fonctionne pas !

ZZY : J'ai essayé d'ajouter DebugBreak() au code - aucun résultat, je ne peux toujours pas arrêter le test et sortir du débogueur.

ZZZY : Un point d'arrêt lors de tests sur des données réelles, fonctionne

 
Igor Makanu:

ZZZY : point d'arrêt lors de tests sur des données réelles, fonctionne

Le mien ne fonctionne pas non plus sur les données réelles.

 
pavlick_:

La compilation échoue, erreurs :
a' - trop complexe, simplifier la macro temp.mq5 24 10
s' - membre de la structure non défini temp.mq5 24 10
...

C'est-à-dire que le préprocesseur semble essayer de développer récursivement a.m

Retour au sujet du rétroéclairage

#define a       s.a

Si .a n'est pas mis en évidence - alors le compilateur ne le considère pas comme une macro. En même temps, c'est une erreur. Il s'avère que la mise en évidence par elle-même... et la compilation réelle par elle-même, alors qu'elles devraient fonctionner de manière synchronisée comme dans les exemples suivants :

#define b       b.x

void OnStart()
{
        int b = 1;
#define b   b + 2
        Print( b ); //Error: 'b' - too complex, simplify the macro
}
En soi, c'est faux (parce qu'en C++, il compile sans erreurs et le résultat est 3), mais au moins c'est synchrone (l'illuminateur et le compilateur sont guidés par la même logique).
Raison: