Compartilhar via


Diretivas de compilador (F#)

Este tópico descreve as diretivas de 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 pelo pré-processador, que é executado antes do compilador próprio.

A tabela a seguir lista as diretivas de pré-processamento que estão disponíveis em F#.

Diretiva

Descrição

#if sí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] int string, #[line] int verbatim-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 Editor de código.

ObservaçãoObservação

O comportamento das diretivas de compilação condicional não é que o mesmo que ele está em outros idiomas. Por exemplo, você não pode usar expressões booleanas, envolvendo os símbolos, e true e false ter nenhum significado especial. Símbolos que você usar o #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 de #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 está 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 projeto ou de opção do compilador para definir os símbolos usados pelo #if diretiva.

Diretivas de compilação condicional podem ser aninhadas. Não, o recuo é significativo para diretivas de pré-processamento.

Diretivas de linha

Ao criar, o compilador reporta erros no código do F# referenciando os números de linha em que cada erro ocorre. Esses números de linha inicie em 1 da primeira linha em um arquivo. No entanto, se você estiver gerando o código de origem do F# a partir 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 os números de linha originais e os arquivos de origem para o gerado F# código.

Quando você usa o #line diretiva, o arquivo de nomes devem estar entre aspas. A menos que o token verbatim (@) aparece na frente da cadeia de caracteres, caracteres de barra invertida deve ser escape usando dois caracteres de barra invertida em vez de uma para usá-los no caminho do. A seguir estão os tokens de linha válida. Nestes exemplos, suponha que o arquivo original Script1 resulta em um arquivo gerado automaticamente F# código quando ele é executado através de uma ferramenta e 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 ser interpretados no pré-processador 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 ativada. Portanto, você pode usar a sintaxe leve e a sintaxe detalhada. A diretiva #light por si só é equivalente a #light "on". Se você especificar #light "off", você deve usar uma sintaxe muito detalhada de todas as construções de linguagem. A sintaxe na documentação do F# é apresentado com a suposição de que você está usando a sintaxe leve. Para obter mais informações, consulte Sintaxe muito detalhada (F#).

Para diretivas de intérprete (FSI. exe), consulte Referência de interativo (FSI. exe) F#.

Consulte também

Outros recursos

Referência de linguagem do F#

Opções do compilador (F#)