![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Une note aux programmeurs :
Maintenant, si nous devons modifier une énumération, nous le faisons une fois et à un seul endroit. Nous devons ajouter un nouvel élément, par exemple element_new = 56, nous ajoutons
Et nous ne prenons pas la peine d'éditer la fonction get_enumqq_array(). Cette technique s'appelle X Macro https://en.wikipedia.org/wiki/X_Macro. Si les développeurs le souhaitent, ils peuvent facilement modifier les énumérations standard de manière similaire.
Peut-être pas immédiatement évidente, l'énumération s'est déroulée de cette façon :
Cool ! Je ne connaissais pas le Macro X, merci ! Je ne comprends pas le code, pourquoi il n'y a pas d'erreur à cause de la virgule à la fin de la définition ENUM_QQ_HELPER. Il ne doit pas y avoir de virgule après le dernier élément lors de la définition d'un enum ou d'un array. Mais le compilateur ne semble pas le jurer pour une raison quelconque.
J'ai essayé
ça ne sera pas le cas. Et la taille du tableau (enum) est comme il se doit. C'est cool ! Il semble qu'il s'agisse d'un bug, mais je préfère avoir un tel bug. Vraiment, c'est pratique.
Eh bien, c'est une violation légitime, surtout pour toutes sortes de "trucs" comme celui-ci, apparemment. Ne vous inquiétez pas, ce n'est pas non plus une erreur en C/C++.
SZZ : dans la norme C++ sur le sujet de l'initialisation :
braced-init-list:
{initializer-list , opt}
{ }
C'est-à-dire que la virgule à la fin de braced-init-list est légalisée au plus haut niveau.
C'est-à-dire que la virgule à la fin de la liste d'éléments entre crochets est légalisée au plus haut niveau.
Une note aux programmeurs :
Qu'en est-il des noms normaux qui sont dans les commentaires ?
Qu'en est-il des noms normaux qui sont dans les commentaires ?
Qu'en est-il des noms normaux qui sont dans les commentaires ?
Oui, l'insertion d'un commentaire ne fonctionne pas. Syntaxe malheureuse pour commenter les enums.
Puis-je avoir un exemple de l'enum en question ?
Oui, cela ne fonctionne pas pour insérer un commentaire. Syntaxe malheureuse pour commenter les énumérations.
Concluez-le en /*...*/.
enum E {
a = 1, --**-- Комментарий_1
b = 2 --**-- Комментарий_2
};
Le problème ici est que le préprocesseur ne veut pas manger les commentaires (à la fois // et /*), il ne s'attend pas à les voir lorsque les macros sont développées. Soit vous changez les règles du préprocesseur, soit vous introduisez une manière alternative de commenter les énumérations (le commentaire sera affiché lors de l'exécution du script dans les paramètres), comme ceci :
enum E {
a = 1, --**-- Комментарий_1
b = 2 --**-- Комментарий_2
};
Le prétraitement se fait en plusieurs étapes. Dans un premier temps, tous les commentaires sont supprimés du code source et le résultat est envoyé pour traitement. Et c'est là que le préprocesseur ne s'attend pas à rencontrer un commentaire (lorsqu'il ouvre les macros). Il considérera une telle rencontre comme une erreur. Par exemple, ici :
À première vue, ce code anodin devrait contenir un commentaire. Mais ça ne compile pas.