English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Instrucciones de preprocesador de C#

Las instrucciones del preprocesador guían al compilador para que realice la preprocesación de la información antes de comenzar la compilación real.

Todas las instrucciones del preprocesador comienzan con #. Y en una línea, solo pueden aparecer caracteres de espacio en blanco antes de la instrucción del preprocesador. Las instrucciones del preprocesador no son sentencias, por lo que no terminan con un punto y coma (;).

El compilador de C# no tiene un preprocesador separado, pero, cuando se procesan las instrucciones, actúa como si hubiera un preprocesador separado. En C#, las instrucciones del preprocesador se utilizan para actuar en la compilación condicional. Al igual que en C y C++ La diferencia es que no se utilizan para crear macros. Una instrucción del preprocesador debe ser la única instrucción en la línea.

Lista de instrucciones del preprocesador de C#

La siguiente tabla enumera las instrucciones del preprocesador disponibles en C#:

Instrucciones del preprocesadorDescripción
#defineSe utiliza para definir una serie de caracteres que se convierten en un símbolo.
#undefSe utiliza para desdefinir un símbolo.
#ifSe utiliza para probar si un símbolo es verdadero.
#elseSe utiliza para crear instrucciones condicionales compuestas, junto con #if.
#elifSe utiliza para crear instrucciones condicionales compuestas.
#endifEspecifica el final de una instrucción condicional.
#linePermite que pueda modificar el número de líneas del compilador y (opcionalmente) el nombre del archivo de salida de errores y advertencias.
#errorPermite generar un error desde una ubicación específica del código.
#warningPermite generar un aviso de nivel superior desde una ubicación específica del código.
#regionLe permite especificar un bloque de código que puede expandirse o colapsarse al usar las características de esquema del Editor de Código Visual Studio.
#endregionIdentifica el final del bloque #region.

#define preprocesador

#define instrucciones del preprocesador crean constantes de símbolo.

#define permite definir un símbolo, de modo que al usar el símbolo como expresión para la instrucción #if, la expresión devolverá true. Su sintaxis es la siguiente:

#define símbolo

El siguiente programa ilustra esto:

#define PI 
using System;
namespace PreprocessorDAppl
{
   class Program
   {
      static void Main(string[] args)
      {
         #if (PI)
            Console.WriteLine("PI está definido");
         #else
            Console.WriteLine("PI no está definido");
         #endif
         Console.ReadKey();
      }
   }
}

Cuando el código anterior se compila y ejecuta, producirá los siguientes resultados:

PI está definido

Instrucción condicional

Puede usar la instrucción #if para crear una instrucción condicional. Las instrucciones condicionales se utilizan para probar si un símbolo es verdadero. Si es verdadero, el compilador ejecutará el código entre #if y la siguiente instrucción.

Sintaxis de instrucción condicional:

#if símbolo [operador símbolo]...

Donde,símbolo es el nombre del símbolo que se va a probar. También puede usar true y false, o colocar el operador de negación delante del símbolo.

Operadores comunes incluyen:

  • == (igual)

  • != (no es igual)

  • && (y)

  • || (o)

También puede usar paréntesis para agrupar símbolos y operadores. Las instrucciones condicionales se utilizan para compilar código en versiones de depuración o configuraciones de compilación especificadas. Una #if Las instrucciones condicionales, deben ser expresamente indicadas con un #endif Finalización de instrucción.

El siguiente programa muestra el uso de instrucciones condicionales:

#define DEBUG
#define VC_V10
using System;
public class TestClass
{
   public static void Main()
   {
      #if (DEBUG && !VC_V10)
         Console.WriteLine("DEBUG está definido");
      #elif (!DEBUG && VC_V10)
         Console.WriteLine("VC_V"}10 está definido);
      #elif (DEBUG && VC_V10)
         Console.WriteLine("DEBUG y VC_V10 están definidos);
      #else
         Console.WriteLine("DEBUG y VC_V10 no están definidos);
      #endif
      Console.ReadKey();
   }
}

Cuando el código anterior se compila y ejecuta, producirá los siguientes resultados:

DEBUG y VC_V10 están definidos