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

 
fxsaber:

Les développeurs. Comme c'est le cas avec OrderSend, par exemple.

Voici un exemple https://www.mql5.com/ru/forum/295485/page11#comment_9959761

Je pensais qu'ils en auraient assez de répondre à la même question et qu'ils émettraient finalement un avertissement - non, ils ne l'ont pas fait.

MQL n'est donc pas destiné aux traders, mais aux programmeurs.

Баг компилятора при параметре шаблона = void*
Баг компилятора при параметре шаблона = void*
  • 2018.12.20
  • www.mql5.com
Ошибка компилятора. Билд 1961, 64 бит...
 
A100:

Il suffit de désactiver les avertissements basés sur les nombres (vous ne pouvez pas les voir à travers le MetaEditor, mais ils sont là), ce que je fais à travers la commande compilateur

Pouvez-vous me dire comment faire ?
 
Alexey Navoykov:
Pouvez-vous me dire comment cela se fait ?

Les résultats de la compilation sont envoyés dans un fichier et de là, les lignes qui n'ont pas de numéros d'avertissement prédéfinis sont extraites (après le mot avertissement, il y a un numéro).

 
A100:

Les résultats de la compilation sont sortis dans un fichier et de là, les lignes qui n'ont pas de numéros d'avertissement prédéfinis sont extraites (le mot avertissement est suivi d'un numéro).

Alors comment faire pour que ces avertissements n'apparaissent pas dans ME ? Où dois-je mettre ces chiffres ?
 
Alexey Navoykov:
Alors comment faire pour que ces avertissements n'apparaissent pas dans ME ? Où dois-je mettre ces chiffres ?

Je compile en ligne de commande et tous les messages s'affichent également en ligne de commande. Il ne peut pas être attaché à l'IDE MetaEditor. Il s'agit de la compilation finale, pour ainsi dire, qui vérifie les avertissements importants. Je ne regarde même plus les avertissements dans l'IDE, ils sont trop nombreux.

 
A100:

MQL n'est donc pas destiné aux traders, mais aux programmeurs.

N'étant pas un programmeur, j'utilise MQL. Finissez ce mantra sur les programmeurs. Je pense avoir une meilleure maîtrise de MQL qu'un utilisateur moyen et peut-être qu'un indépendant.

Je peux donc raisonnablement dire que je comprends les problèmes rencontrés par la plupart des utilisateurs de la langue.

 
A100:

Je compile sur la ligne de commande et tous les messages sont également émis sur la ligne de commande. Il ne peut pas être attaché à l'IDE MetaEditor. Il s'agit de la compilation finale - vérifiez les avertissements importants.

Eh bien, ce n'est pas intéressant... Au fait, pourquoi compilez-vous en ligne de commande ?
 
Alexey Navoykov:
Ah, ce n'est pas intéressant... Au fait, pourquoi compilez-vous en ligne de commande ?

Disons qu'une nouvelle version est sortie et / ou j'ai besoin de recompiler tous et ou seulement certains fichiers - je définis une liste et seule la liste est compilée / plusieurs listes.

Ou dois-je recompiler dans une autre version ? Je fixe le numéro et la liste des versions et le fichier de commande le fait tout seul.

 
A100:

Et quel est l'intérêt d'une telle valeur, si vous n'obtenez que 4 octets sur 8. Étant donné que les développeurs ont explicitement interdit de convertir la valeur d'un pointeur en ulong (avant que vous ne puissiez le faire, et croyez-moi, les bits élevés étaient non nuls à l'époque).

Il a été démontré expérimentalement que ce nombre se comporte exactement comme un index de pointeur dans un tableau de pointeurs se comporterait si un tel tableau attribuait des nombres aux pointeurs de manière strictement consécutive et, si une plage de nombres était libérée, les réutilisait du dernier nombre libéré au premier dans l'ordre inverse. Si quelqu'un voulait dupliquer ce système de descripteurs dans son architecture, par exemple en remplaçant un type de pointeur par une structure de taille int, un comportement compréhensible (retour de true comme type inline pour un objet détruit, alors que ce comportement interdit de surcharger un certain nombre d'opérateurs logiques utiles avec des pointeurs, c'est un facepalm complet) et tous les avantages d'un type simple, tout en maintenant un contrôle étroit sur la population des objets et des pointeurs via un compteur, la possibilité d'obtenir ce nombre à partir de l'objet lui-même permettrait d'économiser une quantité significative de pa

En parlant de tâches plus terre à terre, ce nombre indique le nombre d'objets créés dans le système et est utile pour le débogage dans toute architecture basée sur des listes dynamiques. Il n'est pas surprenant que je ne sois pas le premier à avoir trouvé le moyen de "tricher" avec l'interdiction de l'obtenir, et on m'a même indiqué un moyen plus rapide, mais seulement pour 4 personnes.
 
A100:

Par exemple, une nouvelle version est sortie et je dois recompiler tous les fichiers ou seulement certains d'entre eux.

Je vois, mais c'est un cas particulier. Après tout, nous passons la plupart de notre temps à coder et à compiler dans l'IDE, et désactiver les avertissements inutiles serait donc très pratique.

Personnellement, j'y trouve beaucoup de choses inutiles. Par exemple, il existe des avertissements sur la conversion implicite en chaîne de caractères. Je ne me souviens pas de cas où cela aurait pu avoir des conséquences désagréables. Dans 99 % des cas, les chaînes de caractères ne sont utilisées que pour imprimer du texte à l'écran ou l'écrire dans un fichier.

Ou, supposons que le type de la valeur de retour de la fonction soit bool, et que vous retourniez 0 ou 1, le compilateur se plaindra aussi, disant que le type n'est pas booléen. VS ne l'a pas. Ces constantes sont autorisées pour bool. Par exemple, il m'est plus commode d'écrire return 0 plutôt que return false car c'est beaucoup plus facile à percevoir visuellement.

Ainsi, mon journal est presque entièrement rempli de ces deux seuls avertissements. J'aimerais m'en débarrasser).

Quand j'y arriverai, peut-être que je le finirai moi-même. J'ai beaucoup d'idées à ce sujet. Pour l'instant, j'ai juste fait défiler automatiquement le journal après avoir terminé la compilation jusqu'au début de la première erreur (s'il y en a une). Sans cela, je devais faire défiler manuellement la liste (et elle n'est pas si grande), à la recherche du message d'erreur. Quel emmerdeur.