Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Linguagem C

Dominando Diretivas de Pré-processador em C#: Guia Prático

Dominando Diretivas de Pré-processador em C#

Descubra como as diretivas de pré-processador em C# moldam a compilação, controlam fluxo e tratam erros. Este guia cobre cada diretiva, sua sintaxe, exemplos reais e boas práticas.

Diretivas de pré-processador são comandos que o compilador avalia antes da compilação real. Elas ditam quais seções de código são incluídas, como avisos e erros são tratados, e podem até modificar a visão do compilador sobre números de linha e nomes de arquivo.

Em C#, uma diretiva começa com o símbolo # e ocupa uma única linha, terminada por nova linha em vez de ponto e vírgula.

Diretivas de Pré-processador em C#
DiretivaDescriçãoSintaxe
#ifAvalia uma expressão de pré-processador e inclui código apenas se verdadeira.
#if expressão código #endif
#elifUsado após #if para testar expressões adicionais.
#if expr1 código1 #elif expr2 código2 #endif
#elseExecuta quando nenhuma das condições anteriores #if ou #elif é verdadeira.
#if expr1 código1 #else código2 #endif
#endifMarca o fim de um bloco condicional.
#if expr código #endif
#defineDefine um novo símbolo.
#define SÍMBOLO
#undefRemove um símbolo definido anteriormente.
#undef SÍMBOLO
#warningGera um aviso de nível 1 do compilador.
#warning Sua mensagem de aviso
#errorCausa um erro em tempo de compilação.
#error Sua mensagem de erro
#lineSubstitui o número de linha e nome de arquivo do compilador para diagnósticos.
#line 50 "ProgramaFalso.cs" #endif
#regionCria uma região recolhível em editores como Visual Studio.
#region Descrição código #endregion
#pragmaPassa instruções especiais ao compilador (ex.: habilitar/desabilitar avisos).
#pragma warning disable #endif

Definindo e Removendo Símbolos

Exemplo: Definindo um Símbolo

#define TESTANDO

Exemplo: Removendo um Símbolo

#undef TESTANDO

Compilação Condicional com #if, #elif, #else e #endif

Exemplo Prático

#define CSHARP #undef PYTHON using System; namespace Diretiva { class DiretivaCondicional { static void Main(string[] args) { #if (CSHARP && PYTHON) Console.WriteLine("CSHARP e PYTHON estão definidos"); #elif (CSHARP && !PYTHON) Console.WriteLine("CSHARP está definido, PYTHON não está definido"); #elif (!CSHARP && PYTHON) Console.WriteLine("PYTHON está definido, CSHARP não está definido"); #else Console.WriteLine("CSHARP e PYTHON não estão definidos"); #endif } } }

Saída: CSHARP está definido, PYTHON não está definido


Gerando Avisos e Erros

Exemplo de Aviso

using System; namespace Diretivas { class AvisoDiretiva { public static void Main(string[] args) { #if (!CSHARP) #warning CSHARP não está definido #endif Console.WriteLine("Exemplo de diretiva #warning"); } } }

A saída inclui uma linha de aviso, mas o texto do console é impresso.

Exemplo de Erro

using System; namespace Diretiva { class Erro { public static void Main(string[] args) { #if (!CSHARP) #error CSHARP não está definido #endif Console.WriteLine("Exemplo de diretiva #error"); } } }

Saída: build falha com erro em tempo de compilação; a linha final do console nunca é executada.


Personalizando Locais de Diagnóstico com #line

Exemplo

using System; namespace Diretiva { class LinhaDemo { public static void Main(string[] args) { #line 200 "OutroPrograma.cs" #warning Aviso real gerado por Programa.cs na linha 10 } } }

Resultado: Aviso aparece como OutroPrograma.cs(200,22): warning CS1030: ...


Organizando Código com #region e #endregion

Exemplo

using System; namespace Diretiva { class RegiaoDemo { public static void Main(string[] args) { #region Olá Console.WriteLine("Olá"); Console.WriteLine("Olá"); Console.WriteLine("Olá"); Console.WriteLine("Olá"); Console.WriteLine("Olá"); #endregion } } }

Saída: cinco linhas de "Olá".


Instruções Avançadas de Compilador com #pragma

Exemplo

using System; namespace Diretiva { class PragmaDemo { public static void Main(string[] args) { #pragma warning disable #warning Este é um aviso 1 #pragma warning restore #warning Este é um aviso 2 } } }

Apenas o segundo aviso é exibido.

Para mais detalhes, consulte a referência oficial #pragma (referência C#).

Linguagem C

  1. Entendendo Palavras-chave e Identificadores em C#: Regras, Listas e Boas Práticas
  2. Dominando Variáveis, Literais e Constantes em C++: Guia Completo
  3. Entendendo Tipos de Dados em C++: Fundamentos, Modificadores e Boas Práticas
  4. Palavras-chave e Identificadores em C: Um Guia Prático
  5. Tipos de Dados em C Explicados: int, float, char e Mais – Guia Completo
  6. Palavras-chave e Identificadores em Python: Dominando Palavras Reservadas e Convenções de Nomenclatura
  7. Expressões Regulares em Python (Módulo re) – Guia Prático
  8. Dominando o Módulo time do Python: Funções, Structs e Exemplos Práticos
  9. Impressão 3D vs Usinagem CNC: Escolhendo a Ferramenta Certa para Seu Projeto
  10. O que Significa SFM na Usinagem CNC?