ifdef ... elsifdef ... elsedef ... endifdef Instruções

A declaração ifdef

o ifdefinstrução é executada em tempo de análise, não em tempo de execução. Isso permite que você altere a maneira como seu programa opera de maneira muito eficiente.

Uma vez que a instrução ifdef funciona no tempo de análise, os valores de tempo de execução não podem ser verificados; em vez disso, as definições especiais também podem ser definidas ou não definidas no tempo de análise.

Sintaxe

A sintaxe da instrução ifdef é a seguinte -

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

Se a expressão booleana for avaliada como verdadeira, o bloco de código dentro da instrução if será executado. Caso contrário, o primeiro conjunto de código após o final da instrução ifdef será executado.

O ifdef verifica as macros definidas usandowith definepalavras-chave. Existem muitas macros definidas como WIN32_CONSOLE, WIN32 ou LINUX. Você pode definir suas próprias macros da seguinte forma -

with define    MY_WORD    -- defines

Você pode indefinir uma palavra já definida da seguinte forma -

without define OTHER_WORD -- undefines

Exemplo

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

Isso produz o seguinte resultado -

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

O ifdef ... elsedef Declaração

Você pode executar uma ação se a macro fornecida for definida, caso contrário, você pode executar outra ação caso a macro fornecida não esteja definida.

Sintaxe

A sintaxe da instrução ifdef ... elsedef é a seguinte -

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

Exemplo

#!/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 você executa este programa em uma máquina Linux, ele produz o seguinte resultado -

This is not windows 32 platform

O ifdef ... elsifdef Declaração

Você pode verificar várias macros usando ifdef...elsifdef declaração.

Sintaxe

A sintaxe da instrução ifdef ... elsifdef é a seguinte -

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

Exemplo

#!/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 você executa este programa em uma máquina Linux, ele produz o seguinte resultado -

This is LINUX platform

Todas as afirmações acima possuem várias formas que proporcionam flexibilidade e facilidade de uso com base em diferentes situações.