Directivas de preprocesador en C#: Cómo moldean tu código
Las directivas de preprocesador dan instrucciones al compilador para preprocesar la información antes de que comience la compilación real.
Todas las directivas comienzan con #, y solo caracteres de espacio en blanco pueden aparecer antes de una directiva en una línea. No son sentencias, por lo que no terminan con punto y coma (;).
El compilador C# no tiene un preprocesador separado; sin embargo, las directivas se procesan como si lo tuviera. En C# se usan para ayudar en la compilación condicional. A diferencia de C y C++, no se usan para crear macros. Una directiva debe ser la única instrucción en una línea.
Directivas de preprocesador en C#
| Nº | Directiva y descripción |
|---|---|
| 1 | #define: Define una secuencia de caracteres, llamada símbolo. |
| 2 | #undef: Permite indefinir un símbolo. |
| 3 | #if: Permite probar un símbolo para ver si evalúa a true. |
| 4 | #else: Crea una directiva condicional compuesta junto con #if. |
| 5 | #elif: Permite crear una directiva condicional compuesta. |
| 6 | #endif: Especifica el final de una directiva condicional. |
| 7 | #line: Modifica el número de línea del compilador y (opcionalmente) el nombre de archivo para errores y advertencias. |
| 8 | #error: Genera un error desde una ubicación específica en el código. |
| 9 | #warning: Genera una advertencia de nivel uno desde una ubicación específica. |
| 10 | #region: Especifica un bloque de código que se puede expandir/colapsar en Visual Studio. |
| 11 | #endregion: Marca el final de un bloque #region. |
La directiva #define
Crea constantes simbólicas. Permite definir un símbolo tal que, al usarlo como expresión en #if, la expresión evalúa a true.
Sintaxis:
#define símbolo
Ejemplo:
#define PI
using System;
namespace PreprocesadorApp {
class Program {
static void Main(string[] args) {
#if (PI)
Console.WriteLine("PI está definido");
#else
Console.WriteLine("PI no está definido");
#endif
Console.ReadKey();
}
}
}
Resultado:
PI está definido
Directivas condicionales
Use #if para crear una directiva condicional. Útiles para probar símbolos y compilar código para builds de depuración o configuraciones específicas.
Sintaxis:
#if símbolo [operador símbolo]...
Operadores: == (igualdad), != (desigualdad), && (y), || (o). Puede agrupar con paréntesis. Una directiva que comienza con #if debe terminar explícitamente con #endif.
Ejemplo:
#define DEBUG
#define VC_V10
using System;
public class ClasePrueba {
public static void Main() {
#if (DEBUG && !VC_V10)
Console.WriteLine("DEBUG está definido");
#elif (!DEBUG && VC_V10)
Console.WriteLine("VC_V10 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();
}
}
Resultado:
DEBUG y VC_V10 están definidos
Lenguaje C
- C# Hola Mundo – Construyendo su primera aplicación en C#
- Entendiendo palabras clave e identificadores en C#: Reglas, listas y mejores prácticas
- Domine variables y tipos de datos primitivos en C#: Guía completa
- Operadores en C# – Guía completa de operadores en C#
- Dominando operadores bit a bit y de desplazamiento en C#: Guía completa
- Fundamentos de C#: Entrada y salida esenciales
- Expresiones, sentencias y bloques en C#: Guía completa con ejemplos prácticos
- Dominando los comentarios en C#: Tipos, mejores prácticas y documentación XML
- Dominando la sentencia switch en C#: Sintaxis, ejemplos y mejores prácticas
- Operador ternario en C#: Guía concisa para expresiones condicionales
- Dominando las Directivas de Preprocesador en C#: Guía Práctica