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.

ObservaçãoObservaçã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#.

Consulte também

Outros recursos

Referência de linguagem do F#

Opções do compilador (F#)