C # - Diretivas do pré-processador

As diretivas do pré-processador fornecem instruções ao compilador para pré-processar as informações antes do início da compilação real.

Todas as diretivas de pré-processador começam com # e apenas os caracteres de espaço em branco podem aparecer antes de uma diretiva de pré-processador em uma linha. As diretivas do pré-processador não são instruções, portanto, não terminam com um ponto e vírgula (;).

O compilador C # não possui um pré-processador separado; no entanto, as diretivas são processadas como se houvesse uma. Em C #, as diretivas do pré-processador são usadas para ajudar na compilação condicional. Ao contrário das diretivas C e C ++, elas não são usadas para criar macros. Uma diretiva de pré-processador deve ser a única instrução em uma linha.

Diretivas de pré-processador em C #

A tabela a seguir lista as diretivas de pré-processador disponíveis em C # -

Sr. Não. Diretiva de pré-processador e descrição
1

#define

Ele define uma sequência de caracteres, chamada de símbolo.

2

#undef

Ele permite que você desfaça um símbolo.

3

#if

Permite testar um símbolo ou símbolos para ver se são avaliados como verdadeiros.

4

#else

Ele permite criar uma diretiva condicional composta, junto com #if.

5

#elif

Ele permite a criação de uma diretiva condicional composta.

6

#endif

Especifica o fim de uma diretiva condicional.

7

#line

Ele permite que você modifique o número da linha do compilador e (opcionalmente) a saída do nome do arquivo para erros e avisos.

8

#error

Ele permite gerar um erro a partir de um local específico em seu código.

9

#warning

Ele permite gerar um aviso de nível um a partir de um local específico em seu código.

10

#region

Ele permite especificar um bloco de código que pode ser expandido ou recolhido ao usar o recurso de estrutura de tópicos do Editor de Código do Visual Studio.

11

#endregion

Ele marca o fim de um bloco #region.

O pré-processador #define

A diretiva do pré-processador #define cria constantes simbólicas.

#define permite definir um símbolo de forma que, usando o símbolo como a expressão passada para a diretiva #if, a expressão seja avaliada como verdadeira. Sua sintaxe é a seguinte -

#define symbol

O programa a seguir ilustra isso -

#define PI 
using System;

namespace PreprocessorDAppl {
   class Program {
      static void Main(string[] args) {
         #if (PI)
            Console.WriteLine("PI is defined");
         #else
            Console.WriteLine("PI is not defined");
         #endif
         Console.ReadKey();
      }
   }
}

Quando o código acima é compilado e executado, ele produz o seguinte resultado -

PI is defined

Diretivas Condicionais

Você pode usar a diretiva #if para criar uma diretiva condicional. As diretivas condicionais são úteis para testar um símbolo ou símbolos para verificar se sua avaliação é verdadeira. Se eles forem avaliados como verdadeiros, o compilador avalia todo o código entre o #if e a próxima diretiva.

A sintaxe para diretiva condicional é -

#if symbol [operator symbol]...

Onde, símbolo é o nome do símbolo que você deseja testar. Você também pode usar verdadeiro e falso ou prefixar o símbolo com o operador de negação.

O símbolo do operador é o operador usado para avaliar o símbolo. Os operadores podem ser um dos seguintes -

  • == (igualdade)
  • ! = (desigualdade)
  • && (e)
  • || (ou)

Você também pode agrupar símbolos e operadores com parênteses. As diretivas condicionais são usadas para compilar o código para um build de depuração ou ao compilar para uma configuração específica. Uma diretiva condicional começando com um#if diretiva deve ser terminada explicitamente com um #endif diretiva.

O programa a seguir demonstra o uso de diretivas condicionais -

#define DEBUG
#define VC_V10
using System;

public class TestClass {
   public static void Main() {
      #if (DEBUG && !VC_V10)
         Console.WriteLine("DEBUG is defined");
      #elif (!DEBUG && VC_V10)
         Console.WriteLine("VC_V10 is defined");
      #elif (DEBUG && VC_V10)
         Console.WriteLine("DEBUG and VC_V10 are defined");
      #else
         Console.WriteLine("DEBUG and VC_V10 are not defined");
      #endif
      Console.ReadKey();
   }
}

Quando o código acima é compilado e executado, ele produz o seguinte resultado -

DEBUG and VC_V10 are defined