Direttive

Le direttive sono particolari istruzioni che sono interpretate al momento della compilazione in memoria di un programma Proteus; tutte le direttive iniziano con il carattere riservato '!' e, come i commenti, possono essere inserite anche tra due parti di una linea interrotta; il nome della direttiva è insensibile alle maiuscole.

Le direttive permettono di includere del codice contenuto in un altro file, oppure eseguire condizionalmente una parte o l'altra del codice, sfruttando il concetto di etichetta.

Un'etichetta è una sequenza di caratteri alfanumerici, sensibile alle maiuscole, di cui si può variare e verificare lo stato di definizione. A tal fine, si utilizzano le seguenti direttive:

!define LABEL

definisce l'etichetta LABEL; è equivalente al parametro sulla linea di comando -n

!undef LABEL

elimina la definizione dell'etichetta LABEL; è equivalente al parametro sulla linea di comando -u

!ifdef LABEL
   ...
!else
   ...
!endif

la direttiva !ifdef verifica che LABEL sia definita; in caso affermativo, compila tutto il codice compreso tra !ifdef e !else (se presente, oppure !endif); se LABEL non risulta definita, viene compilato il codice che segue !else (se presente) e precede il relativo !endif; questa costruzione è molto simile al metodo IF..ELSE..ENDIF

!ifndef LABEL
   ...
!else
   ...
!endif

analoga alla direttiva !ifdef, inverte la logica di compilazione; se LABEL è definita, compila la parte dopo il relativo !else, altrimenti la parte che lo precede.

Proteus è dotato delle seguenti etichette predefinite all'avvio (salvo rimozione della definizione con -u o !undef):

UNIX è definita se il sistema operativo in uso è di tipo Unix™
MS_DOS è definita se il sistema operativo in uso è di tipo Ms-Dos™ oppure Windows 95™
WINDOWS è definita se il sistema operativo in uso è di tipo Windows™ (95, 98, ME, NT, 2000, XP)
INTERACTIVE è definita se la versione di Proteus in esecuzione supporta le funzioni a console interattive
SERVICE è definita se la versione di Proteus in esecuzione è un servizio
ISAPI è definita se la versione di Proteus in esecuzione è una ISAPI

Le etichette permettono di pseudo-compilare condizionalmente in memoria solo alcune parti del proprio codice, ad esempio per realizzare programmi Proteus multilingua oppure platform-independent.

Una direttiva particolare è:

!include "pathname"

causa l'inclusione nel programma del testo contenuto nel file specificato; il parametro indicato è sempre una stringa (tra virgolette) corrispondente ad un nome di file completo di eventuale percorso.

Proteus viene fornito con alcuni file inclusi standard, elencati di seguito, contenenti costanti e definizioni utili per scrivere i propri programmi attraverso stringhe mnemoniche invece di oscure costanti:

Nel seguente esempio:

!ifdef UNIX
   !include "unxspec.prt"
!else
   !include "dosspec.prt"
!endif

il programma risultante includerà il file "unxspec.prt" se UNIX è definito, il file "dosspec.prt" altrimenti. I file inclusi possono a loro volta includere altri file, senza limitazioni (eccetto la memoria). La regola di ricerca del file oggetto della direttiva !include è la medesima impiegata per l'apertura del file di programma, con la seguente eccezione: prima di valutare i percorsi in PATH, viene considerata la directory corrispondente al file di programma specificato sulla linea di comando. L'utilizzo della direttiva !include permette la creazione di librerie di funzioni personali, che possono quindi essere riutilizzate in più programmi.

Le direttive possono anche essere impiegate per documentare il programma con del testo formattato; a tal fine, sono fornite due speciali direttive:

!bdoc

tutto il testo che segue è ignorato, ad eccezione delle eventuali direttive !bdoc ed !edoc

!edoc

riprende l'interpretazione del programma dopo una direttiva !bdoc

Le direttive !bdoc ed !edoc possono essere nidificate; l'importante è che il numero delle direttive di un tipo corrisponda al numero delle direttive dell'altro tipo; per quanto riguarda l'interpretazione del programma, si può pensare idealmente ad un contatore che viene incrementato da !bdoc e decrementato da !edoc: solo quando tale contatore è nullo il programma viene interpretato (e tale contatore non deve mai diventare negativo). Ecco un esempio:

!bdoc
  Qui posso scrivere quello che voglio; l'unica cosa di cui devo
  tenere conto è di non iniziare mai una riga con !bdoc o !edoc.
!edoc
CONSOLELN "Salve, mondo!"

Un'altra direttiva interessante è:

!endprog

termina il programma, indipendentemente dalla posizione nel file (e dal fatto che si trovi in un file incluso)

Mediante !endprog è possibile "tagliare fuori" tutto il codice che segue un determinato punto del programma, utile per velocizzare il caricamento se, ad esempio, ciò che segue nel file sono solo commenti o documentazione.
Non solo: è possibile eventualmente includere dei dati nel file di programma stesso; infatti, quando all'interno del programma compare questa direttiva, viene predefinito l'identificatore PROG_DATA, che assume come valore l'offset all'interno dello script della prima riga che segue la direttiva !endprog. Con questo semplice frammento di codice è possibile accedere ai dati seguenti alla direttiva:

SET H = FOPEN(ARGV(2), 1)
FSEEK(H, PROG_DATA, 0)

Di default, se Proteus non riconosce una direttiva emette un messaggio di errore e non esegue il programma; questo comportamento può essere cambiato utilizzando il parametro sulla linea di comando '-g'.

Un'altra direttiva molto importante, disponibile nella versione Windows™ dell'interprete, è !extern; attraverso questa direttiva è possibile utilizzare in Proteus funzioni compilate in DLL esterne, seguendo lo schema documentato nel capitolo "Collegamento di funzioni esterne a Proteus".

Inizio pagina Prossimo argomento Argomento precedente Indice per argomenti Indice analitico
Midnight Lake iPhone Case Black Women Shoes Black Flat Shoes Leather Flats Black Patent Ballerinas Black Ballet Shoes Casual Shoes Black Shoes Women Balle Record Player Cufflinks Best iPhone XR Clear Cases iPhone XS/XS Max Leather Cases Sale Best iPhone 8/8 Plus Silicone Cases iPhone 7/7 Plus Cases & Screen Protector New Cases For iPhone 6/6 Plus iPhone 8 Case Sale iPhone Xr Case Online iPhone 7 Case UK Online iPhone X Case UK Sale iPhone X Case Deals iPhone Xs Case New Case For iPhone Xr UK Online Case For iPhone 8 UK Outlet Fashion Silver Cufflinks For Men Best Mens Cufflinks Outlet Online The Gold Cufflinks Shop Online Cheap Shirt Cufflinks On Sale Nice Wedding Cufflinks UK Online Top Black Cufflinks UK Online Mens Cufflinks Online Silver Cufflinks For Men Men Cufflinks UK Sale Gold Cufflinks UK Online Gold Cufflinks UK Silver Cufflinks UK Shirt Cufflinks Discount Online Mens Cufflinks Deals & Sales Girls Shoes For Dance Fashion Ballet Dance Shoes Best Ballet Flats Shoes UK Online Cheap Ballet Pointe Shoes UK Online Best Ballet Shoes Outlet Best Dance Shoes Sale Cheap Ballet Flats Sale UK Best Pointe Shoes Online UK Ballet Dance Shoes UK Shoes For Dance UK Best Ballet Slippers Shop Best Yoga Shoes Hotsell