Diretivas de compilador (F#)
Este tópico descreve as diretivas do processador e diretivas de compilador.
Diretivas do pré-processador
Uma diretiva de pré-processamento é prefixada com o símbolo # e aparece em uma linha por si só.Ele é interpretado no pré-processador, que é executado antes do compilador propriamente dito.
A tabela a seguir lista as diretivas de pré-processamento que estão disponíveis em F#.
Diretiva |
Descrição |
---|---|
#ifsímbolo |
Oferece suporte à compilação condicional.O código na seção após a #if é incluído se o símbolo está definido. |
#else |
Oferece suporte à compilação condicional.Marca uma seção de código para incluir se o símbolo usado com o anterior #if não está definido. |
#endif |
Oferece suporte à compilação condicional.Marca o final de uma seção condicional do código. |
#[linha] int, #[line] intstring, #[line]intverbatim-string |
Indica a origem código linha e o arquivo de nome original, para depuração.Esse recurso é fornecido para ferramentas que geram um código de origem F#. |
Diretivas de compilação condicional
O código que está desativado por uma das seguintes diretivas aparece esmaecido na Visual Studio o Editor de código.
Observação |
---|
O comportamento das diretivas de compilação condicional não é o mesmo como é em outros idiomas.Por exemplo, você não pode usar expressões booleanas, envolvendo símbolos, e true e false têm um significado especial.Símbolos usados na #if diretiva deve ser definida pela linha de comando ou nas configurações do projeto; Não há nenhum #define diretiva de pré-processamento. |
O código a seguir ilustra o uso da #if, #else, e #endif diretivas.Neste exemplo, o código contém duas versões da definição de function1.Quando VERSION1 é definida usando o -definir a opção de compilador, o código entre o #if diretiva e o #else diretiva é ativada.Caso contrário, o código entre #else e #endif é ativado.
#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
Não há nenhum #define diretiva de pré-processamento em F#.Você deve usar as configurações de opção ou projeto do compilador para definir os símbolos usados pelo #if diretiva.
Diretivas de compilação condicional podem ser aninhadas.Recuo não é significativo para diretivas de pré-processamento.
Diretivas de linha
Ao criar, o compilador reporta erros no código do F# fazendo referência a números de linha em que cada erro ocorre.Esses números de linha começam com 1 para a primeira linha em um arquivo.No entanto, se você estiver gerando o código-fonte do F# de outra ferramenta, os números de linha no código gerado geralmente não são de interesse, porque os erros no F# código gerado provavelmente decorrentes de outra fonte.O #line diretiva fornece uma maneira para os autores das ferramentas que geram código-fonte F# para passar informações sobre a linha original de arquivos de origem e de números para o código gerado F#.
Quando você usa o #line diretriz, nomes de arquivo devem ser colocados entre aspas.A menos que o token verbatim (@) aparece na frente da cadeia de caracteres, é necessário sair caracteres de barra invertida, usando dois caracteres de barra invertida em vez de uma para usá-los no caminho.A seguir estão os tokens de linha válida.Nesses exemplos, suponha que o arquivo original Script1 resulta em um arquivo de código F# gerado automaticamente quando ele é executado através de uma ferramenta e que o código no local de uma dessas diretivas é gerado a partir de alguns símbolos na linha 25 no arquivo Script1.
# 25
#line 25
#line 25 "C:\\Projects\\MyProject\\MyProject\\Script1"
#line 25 @"C:\Projects\MyProject\MyProject\Script1"
# 25 \@\"C:\Projects\MyProject\MyProject\Script1\"
Esses símbolos indicam que o código F# gerado neste local é derivado de algumas construções em ou próximo à linha 25 na Script1.
Diretivas de compilador
Diretivas de compilador são semelhantes às diretivas de pré-processamento, porque eles são prefixados com um sinal de #, mas em vez de sendo interpretada pelo pré-processador, eles são deixados para o compilador interpretar e agir em.
A tabela a seguir lista a diretiva de compilador está disponível em F#.
Diretiva |
Descrição |
---|---|
#light["on" | "off]" |
Habilita ou desabilita a sintaxe leve, para compatibilidade com outras versões do ML.Por padrão, a sintaxe leve está habilitado.A sintaxe detalhada está sempre ativado.Portanto, você pode usar sintaxe leve e sintaxe detalhada.A diretiva #light por si só é equivalente a #light "on".Se você especificar #light "off", você deve usar a sintaxe detalhada para todas as construções de linguagem.Sintaxe na documentação do F# é apresentada com a suposição de que você está usando a sintaxe leve.Para obter mais informações, consulte Sintaxe detalhada (F#). |
Para diretivas de intérprete (FSI. exe), consulte Referência interativos (FSI. exe) F#.