Aide sur la Directive Defval
Revenir à la page d'accueil
defval nom [valeur]
Cette directive permet (à l'instar de la directive #define de c/c++) d'associer un nom symbolique à une valeur. Ce nom symbolique peut ensuite être utilisé dans le fichier de description. Lors de la
lecture des directives suivantes, le nom symbolique sera remplacé (substitué) par la valeur qui lui est associée.
De plus, une directive #define correspondante sera aussi générée qui pourra ainsi être également
utilisée par l'application. exemple:
defval BioLevel 19
Il est possible d'omettre la valeur lorsque l'on veut générer un define dans le projet dont on veut pouvoir simplement tester l'existence. Ex : defval key_bilap
L'avantage est évident : si le nom symbolique a bien été utilisé partout où l'on a besoin de la
valeur correspondante (aussi bien dans le fichier de description que dans l'application) il suffira, lorsque l'on souhaite modifier cette valeur de n'avoir à intervenir que sur sa définition
Cette directive a été envisagée que pour la définition de valeur numérique. Cette valeur doit être saisie sans blanc. Par exemple, la valeur obtenue
par la déclaration:
defval cplank 6.63 e-34 sera 6.63 (et non pas 6.63e-34)
Néanmoins, il est aussi possible (bien que cette utilité reste à démontrer) de définir sous la même condition (càd sans blanc), une chaîne de caractères (entre côtes). Exemple:
defval titre "DYNAMIQUE"
Incidemment, en définissant une chaîne de caractères non mise entre côtes, il est aussi possible de se redéfinire le langage des directives de Yao it-self. Exemple:
defval define defval grâce à cette déclaration, la
suivante
define CINQ 7 est reconnue comme la directive defval
defval profondeur 19
defval largeur 13 l'ensemble de ces déclarations
defval longueur 25 est équivalent
defval espace space_dim à :
espace largeur longueur profondeur space_dim 13 25 19
Mais un autre avantage, non négligeable, sur l'aspect modulaire apparaît. Si l'on souhaite remplacer un module ModA, par un autre module,
ModB, (en supposant bien sur que ce dernier soit efficient : même nombre d'entrées et de sorties,
même connectivité,) il suffit de faire :
defval ModA ModB
On pourrait presque dire que les modules déclarés dans le fichier de description sont
virtuels !)
Les règles d'utilisation de defval sont les suivantes :
- Les noms symboliques suivants sont réservés et ne doivent donc pas être redéfinis dans le
fichier de description:
YA1, YA2, YA3 (correspondant à la taille de chaque axe)
par contre les #define correspondant sont générés et peuvent être utilisés par l'application.
- Une définition ne doit être redéfinie :
defval epsi 0,5768
defval epsi 0,5876 -> cette définition sera rejetée
- Mais par contre, on peut utiliser une valeur déjà définie dans une nouvelle définition :
defval unite 1000
defval kilo unite -> et donc kilo vaudra 1000
- En général, une définition ne s'applique pas sur une sous-chaîne de caractère. Ainsi, si l'on
a défini la macro defval mod truc
il n'y aura pas de substitution lorsque par exemple la directive modul sera rencontrée: celle-ci
ne sera donc pas remplacée par: trucul
Il y a cependant une exception à cette règle pour la définition des intervalles des directives ctin ctinm (voir ci-après) ; mais à titre
d'exemple, si l'on a définie : defval deep 17
on pourrait saisir l'intervalle : 3..deep
rappel :
L'exec disp_devfal permet d'afficher le tableaux des définitions
Revenir à la page d'accueil