The preprocessors in programming language, preprocessed some form inputs data, which would be used by some subsequent programs like compilers.
Code

#define DEBUG
#define VC_V9
#define TEST

using System;
using System.Diagnostics;


public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

Label1.Text += "<br/>---------Blok 1---------<br/>";
#if (DEBUG && !VC_V9)
Label1.Text +="<br/>"+("#if DEBUG is defined");
Debug.Print("Line 2");
#elif (DEBUG )
Label1.Text +="<br/>"+("elif DEBUG defined");
#elif (DEBUG && VC_V9)
Label1.Text +="<br/>"+("DEBUG and VC_V9 both are defined");
#else
Label1.Text +="<br/>"+("DEBUG and VC_V9 are not defined");
#endif
Label1.Text += "<br/>---------Block 2---------<br/>";
#if (DEBUG && TEST)
Label1.Text += "<br/>" + ("DEBUG && TEST both are defined");
Debug.Print("Line 2");
#line default

Label1.Text += "<br/> Line 21Normal";
Debug.Print("Line 22 Normal");
#line hidden
Label1.Text += "<br/> Line 24 hidden";
Debug.Print("Line 25 Hidden");
#line default
Label1.Text += " Normal";
Debug.Print("Line 28 Hidden");
#endif
Label1.Text += "<br/>--------Block 3----------<br/>";
#if (TEST)
Label1.Text += "<br/> TEST is defined";
#endif
}
}
 

 

Runt Time

Using Block/Debug /Immediate Window F10 moves.

Note the Jumping of curosr over the hidden, from deflaut to default.

The following example shows how the debugger ignores the hidden lines in the code. When you run the example, it will display three lines of text. However, when you set a break point, as shown in the example, and hit F10 to step through the code, you will notice that the debugger ignores the hidden line. Notice also that even if you set a break point at the hidden line, the debugger will still ignore it.