El preprocesador de C# también
ofrece directivas que permiten generar avisos y errores durante el proceso de
preprocesado en caso de que ser interpretadas por el preprocesador. Estas
directivas tienen la siguiente sintaxis:
#warning
<mensajeAviso>
#error
<mensajeError>
La directiva #warning lo que
hace al ser procesada es provocar que el compilador produzca un mensaje de
aviso que siga el formato estándar usado por éste para ello y cuyo texto
descriptivo tenga el contenido indicado en <mensajeAviso>;
y #error
hace lo mismo pero provocando un mensaje de error en vez de uno de aviso.
Usando directivas de compilación condicional se puede
controlar cuando se han de producir estos mensajes, cuando se han de procesar
estas directivas. De hecho la principal utilidad de estas directivas es
permitir controlar errores de asignación de valores a los diferentes
identificadores de preprocesado de un código, y un ejemplo de ello es el
siguiente:
#warning
Código aun no revisado
#define
PRUEBA
#if
PRUEBA && FINAL
#error
Un código no puede ser simultáneamente de prueba y versión final
#endif
class A
{}
En este código siempre se
producirá el mensaje de aviso, pero el #if indica que sólo se producirá el mensaje de
error si se han definido simultáneamente los identificadores de preprocesado PRUEBA y FINAL
Como puede deducirse del ejemplo,
el preprocesador de C# considera que los mensajes asociados a directivas #warning
o #error son todo el texto que se encuentra tras el
nombre de dichas directivas y hasta el final de la línea donde éstas aparecen.
Por tanto, todo comentario que se incluya en una línea de este tipo será
considerado como parte del mensaje a mostrar, y no como comentario como tal.
Por ejemplo, ante la directiva:
#error La
compilación ha fallado // Error
Lo que se mostrará en pantalla es
un mensaje de la siguiente forma:
Fichero.cs(3,5):
error CS1029: La compilación ha fallado // Error