Compartir a través de


#IF ... #ENDIF (Directiva del preprocesador)

Incluye condicionalmente código fuente en tiempo de compilación.

#IF nExpression1 | lExpression1Commands
[#ELIF nExpression2 | #ELIF lExpression2Commands...
#ELIF nExpressionN | #ELIF lExpressionNCommands] 
[#ELSE 
   Commands]
#ENDIF

Parámetros

  • #IF nExpression1 | lExpression1Commands
    nExpression1 especifica la expresión numérica que se evalúa.

    • Si la expresión es distinta de cero, los comandos escritos inmediatamente después que #IF se incluyen en el código compilado. Se abandona la estructura #IF ... #ENDIF y se compila la primera línea de comandos posterior a #ENDIF.
    • Si la expresión es 0, los comandos incluidos inmediatamente después que #IF no se incluyen en el código compilado. Se evalúan todas las directivas incluidas después de #ELIF.

    lExpression1 especifica la expresión lógica que se evalúa.

    • Si la expresión es verdadera (.T.), los comandos escritos inmediatamente después que #IF se incluyen en el código compilado. Se abandona la estructura #IF ... #ENDIF y se compila la primera línea de comandos posterior a #ENDIF.

    • Si la expresión es falsa (.F.), los comandos escritos inmediatamente después que #IF no se incluyen en el código compilado. Se evalúan todas las directivas incluidas después de #ELIF.

      Nota   No especifique variables para nExpression1 o lExpression1. Las variables del sistema no se evalúan hasta el tiempo de ejecución.

  • #ELIF nExpression2 | #ELIF lExpression2Commands
    ...

  • #ELIF nExpressionN | #ELIF lExpressionNCommands
    Si nExpression1 es 0 o lExpression1 es falsa (.F.), se evaluarán las directivas #ELIF. Se evaluará la primera expresión #ELIF nExpression2 o lExpression2, si existe. Si nExpression2 es distinta de cero o lExpression2 toma el valor verdadero (.T.), se incluirán en el código compilado las instrucciones siguientes a #ELIF. Se abandona la estructura #IF ... #ENDIF y se compila la primera línea de comandos posterior a #ENDIF.

    Si nExpression2 es 0 o lExpression2 es falsa (.F.), no se incluirán en el código compilado las instrucciones que haya a continuación de #ELIF. Se evaluará la siguiente directiva #ELIF.

  • #ELSE Commands
    Si no se incluyen directivas #ELIF o las que se incluyen tienen el valor 0 o falso (.F.), la presencia o ausencia de #ELSE determina si se incluirán algunas instrucciones adicionales en el código compilado:

    • Si se incluye #ELSE las instrucciones que sigan a #ELSE se incluirán en el código compilado.
    • Si no se incluye #ELSE, las instrucciones de programa escritas entre #IF y #ENDIF no se incluirán en el código compilado. Se saldrá de la estructura #IF ... #ENDIF y la compilación continuará con la primera línea de programa a continuación de #ENDIF.
  • #ENDIF
    Indica el final de la instrucción #IF.

Observaciones

#IF ... #ENDIF puede mejorar la legibilidad del código fuente, reducir el tamaño del programa compilado y mejorar el rendimiento en algunos casos.

Cuando se compila la estructura #IF ... #ENDIF, se evalúan las sucesivas expresiones lógicas o numéricas. Los resultados de la evaluación determinan qué conjunto de comandos de Visual FoxPro (si corresponde) se incluirán en el código compilado.

Ejemplo

En el ejemplo siguiente, la estructura #IF ... # ENDIF determina qué versión de Visual FoxPro compila el programa y, luego, muestra el mensaje apropiado.

#IF 'WINDOWS' $ UPPER(VERSION( ))
   ? 'This was compiled under Visual FoxPro for Windows'
#ELIF 'MAC' $ UPPER(VERSION( ))
   ? 'This was compiled under Visual FoxPro for Macintosh'
#ELIF 'UNIX' $ UPPER(VERSION( ))
   ? 'This was compiled under FoxPro for UNIX'
#ELSE 
   ? 'This was compiled under FoxPro for MS-DOS'
#ENDIF

Vea también

COMPILE (Comando) | #DEFINE ... #UNDEF (Directiva del preprocesador) | #IFDEF | #IFNDEF ... #ENDIF (Directiva del preprocesador)