ifdef ... elsifdef ... elsedef ... endifdef Declaraciones

La declaración ifdef

los ifdefLa instrucción se ejecuta en tiempo de análisis, no en tiempo de ejecución. Esto le permite cambiar la forma en que opera su programa de una manera muy eficiente.

Dado que la instrucción ifdef funciona en el momento del análisis, los valores en tiempo de ejecución no se pueden verificar, sino que también se pueden establecer o desarmar definiciones especiales en el momento del análisis.

Sintaxis

La sintaxis de la declaración ifdef es la siguiente:

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

Si la expresión booleana se evalúa como verdadera, entonces se ejecuta el bloque de código dentro de la instrucción if. De lo contrario, se ejecutará el primer conjunto de código después del final de la instrucción ifdef.

El ifdef verifica las macros definidas usandowith definepalabras clave. Hay muchas macros definidas como WIN32_CONSOLE, WIN32 o LINUX. Puede definir sus propias macros de la siguiente manera:

with define    MY_WORD    -- defines

Puede anular la definición de una palabra ya definida de la siguiente manera:

without define OTHER_WORD -- undefines

Ejemplo

#!/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

Esto produce el siguiente resultado:

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

La declaración ifdef ... elsedef

Puede realizar una acción si se define una macro determinada; de lo contrario, puede realizar otra acción en caso de que la macro determinada no esté definida.

Sintaxis

La sintaxis de la sentencia ifdef ... elsedef es la siguiente:

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

Ejemplo

#!/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

Cuando ejecuta este programa en una máquina Linux, produce el siguiente resultado:

This is not windows 32 platform

La declaración ifdef ... elsifdef

Puede verificar múltiples macros usando ifdef...elsifdef declaración.

Sintaxis

La sintaxis de la declaración ifdef ... elsifdef es la siguiente:

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

Ejemplo

#!/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

Cuando ejecuta este programa en una máquina Linux, produce el siguiente resultado:

This is LINUX platform

Todas las declaraciones anteriores tienen varias formas que le brindan flexibilidad y facilidad de uso en función de diferentes situaciones.