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.