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