Compartilhar via


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.

Dica

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 do F# Interativo (fsi.exe).

Consulte também

Outros recursos

Referência da linguagem F#

Opções do compilador (F#)