ifdef ... elsifdef ... elsedef ... endifdef Dichiarazioni

L'istruzione ifdef

Il ifdefL'istruzione viene eseguita in fase di analisi non in fase di esecuzione. Ciò consente di modificare il modo in cui il programma funziona in modo molto efficiente.

Dal momento che l'istruzione ifdef funziona in fase di analisi, i valori di runtime non possono essere controllati, ma anche definizioni speciali possono essere impostate o annullate in fase di analisi.

Sintassi

La sintassi dell'istruzione ifdef è la seguente:

ifdef macro then
   -- Statements will execute if the macro is defined.
end if

Se l'espressione booleana restituisce true, viene eseguito il blocco di codice all'interno dell'istruzione if. In caso contrario, verrà eseguita la prima serie di codice dopo la fine dell'istruzione ifdef.

L' ifdef controlla le macro definite utilizzandowith defineparole chiave. Ci sono molte macro definite come WIN32_CONSOLE, WIN32 o LINUX. Puoi definire le tue macro come segue:

with define    MY_WORD    -- defines

Puoi annullare la definizione di una parola già definita come segue:

without define OTHER_WORD -- undefines

Esempio

#!/home/euphoria-4.0b2/bin/eui

with define DEBUG

integer a = 10
integer b = 20

ifdef DEBUG then
   puts(1, "Hello, I am a debug message one\n")
end ifdef

if (a + b) < 40 then
   printf(1, "%s\n", {"This is true if statement!"})
end if

if (a + b) > 40 then
   printf(1, "%s\n", {"This is not true if statement!"})
end if

Questo produce il seguente risultato:

Hello, I am a debug message one
This is true if statement!

L'ifdef ... elsedef Statement

È possibile eseguire un'azione se una determinata macro è definita, altrimenti è possibile eseguire un'altra azione nel caso in cui una determinata macro non sia definita.

Sintassi

La sintassi dell'istruzione ifdef ... elsedef è la seguente:

ifdef macro then
   -- Statements will execute if the macro is defined.
elsedef
   -- Statements will execute if the macro is not defined.
end if

Esempio

#!/home/euphoria-4.0b2/bin/eui

ifdef WIN32 then
   puts(1, "This is windows 32 platform\n")
elsedef
   puts(1, "This is not windows 32 platform\n")
end ifdef

Quando esegui questo programma su una macchina Linux, produce il seguente risultato:

This is not windows 32 platform

L'ifdef ... elsifdef Statement

Puoi controllare più macro usando ifdef...elsifdef dichiarazione.

Sintassi

La sintassi dell'istruzione ifdef ... elsifdef è la seguente:

ifdef macro1 then
   -- Statements will execute if the macro1 is defined.
elsifdef macro2 then
   -- Statements will execute if the macro2 is defined.
elsifdef macro3 then
   -- Statements will execute if the macro3 is defined.
   .......................
elsedef
   -- Statements will execute if the macro is not defined.
end if

Esempio

#!/home/euphoria-4.0b2/bin/eui

ifdef WIN32 then
   puts(1, "This is windows 32 platform\n")
elsifdef LINUX then
   puts(1, "This is LINUX platform\n")
elsedef
   puts(1, "This is neither Unix nor Windows\n")
end ifdef

Quando esegui questo programma su una macchina Linux, produce il seguente risultato:

This is LINUX platform

Tutte le dichiarazioni di cui sopra hanno varie forme che forniscono flessibilità e facilità d'uso in base a diverse situazioni.