Vous n'êtes pas identifié(e).
Indépendemment de son rôle dans la programme, je ne comprends ce qu'elle signifie d'un point de vue purement syntaxique. J'ai l'impression qu'il s'agit tout simplement d'une suite de trois expressions, mais je suis très confus par le cast vers (void) au début du define. Qu'est-ce que ça signifie de convertir en void ?
Si quelqu'un a une idée, je suis tout ouïe.
Dernière modification par wol (30-06-2019 18:34:21)
Hors ligne
Hors ligne
Hors ligne
serait acceptée par le compilateur sans même provoquer d'avertissement car
est une expression valable qui vaut ++top d'après les règles d'évaluation de l'opérateur , (qui est bien un opérateur dans ce contexte et n'a rien à voir avec un appel de fonction).
En rajoutant le (void), on s'assure que l'instruction ptr = PUSH(low, high); provoque une erreur à la compilation, vu que le résultat de l'expression PUSH(low, high) est jetée aux oubliettes et ne peut être affecté à une autre variable ou servir d'opérande dans une expression.
Pour l'info, voilà ce que dit le manuel à propos de void :
A.6.7 Void
The (nonexistent) value of a void object may not be used in any way, and neither explicit nor implicit conversion to any non-void type may be applied. Because a void expression denotes a nonexistent value, such an expression may be used only where the value is not required, for example as an expression statement (Par.A.9.2) or as the left operand of a comma operator (Par.A.7.18).
An expression may be converted to type void by a cast. For example, a void cast documents the discarding of the value of a function call used as an expression statement.
Dernière modification par wol (24-06-2019 21:10:19)
Hors ligne