#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)