Falsam a écrit :Je vais posé cette question stupide mais qui me brûle les lèvres : J’espère que tu as vu
que Protected est mal écrit ?
Je te prie de m'excuser d'avoir fait brûler tes babines ainsi.
La synthèse de ce sujet est la suivante :
La multiplication de confort
A * B
Qui signifie :
A = A * B
est aussi courte, simple d'utilisation et adéquate aux instructions x86 qu'elle est sujete à possible confusion par erreur de frappe. Il y a déjà plusieurs prises en charge d'erreurs qui existent (Cf plus bas)
L'erreur de frappe des directives Global, Static, Shared, Protected et Define est un exemple de confusion possible.
Il en émane un message d'erreur
indirect (c'est ça le souci principal
conséquent) lorsque l'on déclare un pointeur
avec structure (Cf page 1, 3ème message) ).
La confusion se fait en substituant le préfixe '*' (étoile) du pointeur par le caractère opératoire de multiplication de confort A * B.
Or préciser implicitement que le terme B est un pointeur par l'assignation d'une structure selon la syntaxe suivante :
A *B.UneStructure
Préciser ceci, c'est exclure le souhait d'une exécution de multiplication de confort, puisqu'il n'y a pas d'application réelle (
on ne programme pas un OS dans un mode CPU franchement très restreint en PureBasic, c'est précisément ce qu'implique A = A * Pointeur) (pour le calcul matriciel évoqué par Zorro, il y a un jeu d'indexation ASM équivalent à PeekI((8 * A) + (4 * B) + (2 * C) + D) nichable en une seule instruction processeur et bien plus rapide que cette simple multiplication).
Conclusion : L'erreur non détectée à la bonne ligne peut être détectée à la bonne ligne.
Je rajouterai que c'est juste interdire
A * B.UneStructure
et rien d'autre. Pas
A = A * B.UneStructure (comme ça, si ça botte quelqu'un d'y trouver un intérêt, il est libre)
Et qu'en mode non explicite,
A * B.MauvaiseStructure ; est
déjà interdit (structure introuvable)
A ***B.UneStructure ; idem (erreur syntaxe)
A.UneStructure * B ; idem (erreur syntaxe)
Aussi, pourquoi laisser passer un bug vaseux alors que techniquement, il est parfaitement localisable et que l'on en a déterminé son arrêt d'application?
Enfin, en tout cas, ce n'est pas se battre... Oui, j'avais remarqué que Protyected, c'était pas bon!