Directivas de compilador (F#)
En este tema se describen las directivas de procesador y las directivas de compilador.
Directivas de preprocesador
Una directiva de preprocesador lleva como prefijo el símbolo # y aparece sola en una línea.El preprocesador, que se ejecuta antes del propio compilador, la interpreta.
En la tabla siguiente se muestra una lista de las directivas de preprocesador que están disponibles en F#.
Directiva |
Descripción |
---|---|
#ifsímbolo |
Admite la compilación condicional.El código de la sección que aparece después de #if se incluye si se define el símbolo. |
#else |
Admite la compilación condicional.Marca una sección de código para incluirla si no se define el símbolo utilizado con la directiva #if anterior. |
#endif |
Admite la compilación condicional.Marca el final de una sección condicional de código. |
#[línea] int, #[línea] intstring, #[línea] intverbatim-string |
Indica la línea de código fuente original y el nombre del archivo, para la depuración.Esta característica se proporciona para las herramientas que generan código fuente de F#. |
Directivas de compilación condicional
El código que se desactiva como consecuencia de una de estas directivas aparece atenuado en el Editor de código de Visual Studio.
[!NOTA]
El comportamiento de las directivas de compilación condicional no es igual que en otros lenguajes.Por ejemplo, no se pueden utilizar expresiones booleanas con símbolos, y true y false no tienen ningún significado especial.Los símbolos que se utilizan en la directiva #if se deben definir mediante la línea de comandos o en la configuración del proyecto; no hay ninguna directiva de preprocesador #define.
En el siguiente código se muestra el uso de las directivas #if, #else y #endif.En este ejemplo, el código contiene dos versiones de la definición de function1.Cuando se define VERSION1 mediante la opción del compilador -define, se activa el código entre la directiva #if y la directiva #else.De lo contrario, se activa el código que hay entre #else y #endif.
#if VERSION1
let function1 x y =
printfn "x: %d y: %d" x y
x + 2 * y
#else
let function1 x y =
printfn "x: %d y: %d" x y
x - 2*y
#endif
let result = function1 10 20
No hay ninguna directiva de preprocesador #define en F#.Debe utilizar la opción del compilador o la configuración del proyecto para definir los símbolos utilizados por la directiva #if.
Las directivas de compilación condicional se pueden anidar.La sangría no es significativa para las directivas de preprocesador.
Directivas de línea
Al compilar, el compilador notifica los errores del código de F# haciendo referencia a los números de línea en los que se produce cada error.Estos números de línea empiezan por el 1, que corresponde a la primera línea de un archivo.Sin embargo, si se genera código fuente de F# en otra herramienta, los números de línea del código generado no suelen revestir ningún interés, porque lo más probable es que los errores del código de F# generado provengan de otro origen.La directiva #line proporciona a los autores de herramientas que generan código fuente de F# una manera de pasar información acerca de los números de línea originales y los archivos de origen al código de F# generado.
Cuando se utiliza la directiva #line, los nombres de archivo deben ir entre comillas.A menos que el token de escritura literal (@) aparezca delante de la cadena, deberá utilizar la secuencia de escape del carácter de barra diagonal inversa (consistente en utilizar dos caracteres de barra diagonal inversa en lugar de uno) para poder utilizarlos en la ruta de acceso.Los tokens de línea siguientes son válidos.En estos ejemplos, se supone que el archivo original Script1 produce un archivo de código de F# generado automáticamente cuando se ejecuta a través de una herramienta, y que el código que hay en la ubicación de estas directivas se genera a partir de determinados tokens en la línea 25 del archivo Script1.
# 25
#line 25
#line 25 "C:\\Projects\\MyProject\\MyProject\\Script1"
#line 25 @"C:\Projects\MyProject\MyProject\Script1"
# 25 \@\"C:\Projects\MyProject\MyProject\Script1\"
Estos tokens indican que el código de F# generado en esta ubicación se deriva de algunas construcciones que se encuentran en la línea 25 de Script1 o cerca de ella.
Directivas de compilador
Las directivas de compilador se parecen las directivas de preprocesador, porque llevan como prefijo el signo #, pero en lugar de interpretarlas el preprocesador, se dejan para que el compilador las interprete y actúe en consecuencia.
En la tabla siguiente se muestra la directiva de compilador que está disponible en F#.
Directiva |
Descripción |
---|---|
#light ["on"|"off"] |
Habilita o deshabilita la sintaxis simplificada por motivos de compatibilidad con otras versiones de ML.De forma predeterminada, la sintaxis ligera está habilitada.La sintaxis detallada siempre está habilitada.Por consiguiente, puede utilizar la sintaxis simplificada y la sintaxis detallada.La directiva #light por sí sola equivale a #light "on".Si se especifica #light "off", se debe utilizar la sintaxis detallada para todas las construcciones del lenguaje.La sintaxis que se presenta en la documentación de F# está basada en la hipótesis de que se utiliza la sintaxis simplificada.Para obtener más información, vea Sintaxis detallada (F#). |
Para obtener las directivas de intérprete (fsi.exe), vea Referencia de F# Interactive (fsi.exe).