[successivo] [precedente] [inizio] [fine] [indice generale]
Pic offre la possibilità di definire delle macro. La cosa può tornar utile per descrivere diagrammi ripetitivi. Assieme ale regole di visibilità per i blocchi composti (sezione 13.2) consente effettivamente di scrivere delle funzioni (vedi ad esempio il listato 16.1).
La sintassi è la seguente:
define nome_macro separatore corpo_macro separatore |
In questo modo si definisce nome_macro come una macro che poi verrà sostituita dal testo in corpo_macro (separatori esclusi).(1) La macro può essere invocata come segue:
nome_macro(primo_argomento, secondo_primo_argomento, ...) |
Gli (eventuali) argomenti vengono sostituiti al posto degli elementi sintattici $1, $2, ... $n che appaiono nel corpo della macro.
Come esempio di utilizzo delle macro, si considerino il listato 16.1 e la figura 16.2.
|
|
Un dettaglio che l'esempio del listato 16.1 non illustra è che il passaggio dei parametri alle macro non comporta la separazione delle stringhe: chiamando jumper( 1 ), il valore di $1 sarà 1; chiamando jumper(stringa lunga) $1 varrà stringa lunga. Se si intende passare come parametro una coppia ordinata, per evitare conflitti con il simbolo di separazione degli argomenti è possibile avvolgere la coppia fra parentesi. |
La definizione di una macro è persistente da una figura all'altra. Per annullare una definizione si scriva:
undef nome_macro; |
per esempio, il codice del listato 16.3 annulla le due macro definite nel listato 16.1.
|
Informatica per sopravvivere 2006.01.30 --- Copyright © 2004-2006 Massimo Piai -- <pxam67 (ad) virgilio·it>
1) separatore può essere qualunque carattere che non compaia in corpo_macro, oppure la coppia separatore/separatore può essere costituita da una coppia bilanciata di parentesi graffe ({ e }), e (in ogni caso) corpo_macro può contenere coppie bilanciate di parentesi graffe.
Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome macro.html