C # - Directivas de preprocesador
Las directivas del preprocesador dan instrucciones al compilador para preprocesar la información antes de que comience la compilación real.
Todas las directivas de preprocesador comienzan con #, y solo los caracteres de espacio en blanco pueden aparecer antes de una directiva de preprocesador en una línea. Las directivas de preprocesador no son declaraciones, por lo que no terminan con punto y coma (;).
El compilador de C # no tiene un preprocesador separado; sin embargo, las directivas se procesan como si hubiera una. En C #, las directivas del preprocesador se utilizan para ayudar en la compilación condicional. A diferencia de las directivas C y C ++, no se utilizan para crear macros. Una directiva de preprocesador debe ser la única instrucción en una línea.
Directivas de preprocesador en C #
La siguiente tabla enumera las directivas de preprocesador disponibles en C # -
No Señor. | Directiva y descripción del preprocesador |
---|---|
1 | #define Define una secuencia de caracteres, llamada símbolo. |
2 | #undef Te permite eliminar la definición de un símbolo. |
3 | #if Permite probar un símbolo o símbolos para ver si se evalúan como verdaderos. |
4 | #else Permite crear 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 Le permite modificar el número de línea del compilador y (opcionalmente) la salida del nombre del archivo para errores y advertencias. |
8 | #error Permite generar un error desde una ubicación específica en su código. |
9 | #warning Permite generar una advertencia de nivel uno desde una ubicación específica en su código. |
10 | #region Le permite especificar un bloque de código que puede expandir o contraer cuando usa la función de esquema del Editor de código de Visual Studio. |
11 | #endregion Marca el final de un bloque #region. |
El preprocesador #define
La directiva de preprocesador #define crea constantes simbólicas.
#define le permite definir un símbolo de modo que, al usar el símbolo como la expresión pasada a la directiva #if, la expresión se evalúe como verdadera. Su sintaxis es la siguiente:
#define symbol
El siguiente programa ilustra esto:
#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();
}
}
}
Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:
PI is defined
Directivas condicionales
Puede utilizar la directiva #if para crear una directiva condicional. Las directivas condicionales son útiles para probar un símbolo o símbolos para verificar si se evalúan como verdaderos. Si se evalúan como verdaderos, el compilador evalúa todo el código entre #if y la siguiente directiva.
La sintaxis de la directiva condicional es -
#if symbol [operator symbol]...
Donde, símbolo es el nombre del símbolo que desea probar. También puede usar verdadero y falso o anteponer el símbolo con el operador de negación.
El símbolo del operador es el operador utilizado para evaluar el símbolo. Los operadores pueden ser cualquiera de los siguientes:
- == (igualdad)
- ! = (desigualdad)
- && (y)
- || (o)
También puede agrupar símbolos y operadores entre paréntesis. Las directivas condicionales se utilizan para compilar código para una compilación de depuración o cuando se compila para una configuración específica. Una directiva condicional que comienza con un#if directiva debe terminarse explícitamente con una #endif directiva.
El siguiente programa demuestra el uso de directivas condicionales:
#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();
}
}
Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:
DEBUG and VC_V10 are defined