COMPILACIÓN CONDICIONAL 2 http://www.itnuevolaredo.edu.mx/takeyas 1
Preguntas detonadoras Qué es y para qué sirve la compilación condicional? Cuándo se recomienda utilizarla? Qué son las directivas de preprocesamiento? Cuáles son las directivas de prepropcesamiento? Cómo se implementa la compilación condicional en un proyecto de C#? 3 Compilación condicional Se utiliza para incluir o excluir un segmento de código de un programa fuente. Utiliza las directivas de preprocesamiento 4 http://www.itnuevolaredo.edu.mx/takeyas 2
Directivas de preprocesamiento Ofrecen la posibilidad de omitir secciones de código de una aplicación. Se utilizan para notificar errores y/o advertencias o simplemente ignorar algún segmento de código fuente durante la etapa del análisis léxico de la compilación 5 Directivas de preprocesamiento Directiva #define, #undef #if, #else, #endif Uso Permiten definir o anular la definición de un identificador o una macro. Permiten definir o anular secciones de código fuente de una aplicación según la definición (o no) del identificador. 6 http://www.itnuevolaredo.edu.mx/takeyas 3
Recomendacionesde usode compilación condicional Cuando se está probando una aplicación que requiere demasiados datos de entrada. Cuando se desea ejecutar algún método para validar cierta operación (en tiempo de diseño de la aplicación). Cuando una aplicación requiere datos adicionales a los de entrada durante su diseño, pero no durante su ejecución. 7 La directiva#define Se utiliza para definir un identificador. Una vez definido el identificador, el compilador lo utiliza en cada aparición en el código fuente Puede contener una simple definición o una macro 8 http://www.itnuevolaredo.edu.mx/takeyas 4
Ejemplos de la directiva#define #define X #define Datos #define Longitud 35 #define Sumar(x,y) (x+y) 9 Las directivas#if, #else, #endif Se utilizan para controlar las secciones del código fuente que se desea compilar. Funciona de manera semejante al if-else La directiva #if define el inicio de una sección de código y #endif indica el cierre. Deben coincidir las directivas #if y #endif 10 http://www.itnuevolaredo.edu.mx/takeyas 5
Dónde se coloca la directiva #define? #define Bandera using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Circunferencia { class Program { static void Main(string[] args) { 11 Ejemplo static void Main(string[] args) { double dblradio; #if Bandera dblradio = 6.18; #else Console.WriteLine( Radio de la circunferencia?"); dblradio = double.parse(console.readline()); #endif double dblarea = Math.PI * Math.Pow(dblRadio, 2); } Console.WriteLine("Área = "+dblarea); Console.ReadKey(); 12 http://www.itnuevolaredo.edu.mx/takeyas 6
Ejemplo (cont.) Si la Banderaestá definida (#define Bandera) entonces se ejecuta la inicialización directa del valor de la variable dblradio y se omite la captura desde el teclado #if Bandera dblradio = 6.18; // Cuando Bandera está activa #else Console.WriteLine( Radio de la circunferencia?"); dblradio = double.parse(console.readline()); #endif 13 Ejemplo (cont.) Si se elimina la definición de Bandera (#define Bandera) entonces se omite la inicialización directa del valor de la variable dblradioy se captura desde el teclado #if Bandera dblradio = 6.18; // Cuando Bandera está activa #else Console.WriteLine( Radio de la circunferencia?"); dblradio = double.parse(console.readline()); #endif 14 http://www.itnuevolaredo.edu.mx/takeyas 7
Otros títulos del autor http://www.itnuevolaredo.edu.mx/takeyas/libro takeyas@itnuevolaredo.edu.mx Bruno López Takeyas http://www.itnuevolaredo.edu.mx/takeyas 8