當在C#看到預處理指令這個概念時,感覺自己不是很理解,也不是很明白為什么在C#中要加入預處理指令這個東西。最后通過自己的看書和百度上的搜索自己也漸漸了預處理指令中的作用。下面我就淺談一下我自己對預處理指令的理解吧。
當一個程序正常執行的時候,編譯器首先會執行預處理指令,然后再執行其它控制語句。雖然預處理指令不能像控制語句那樣直接執行,但是它也是程序調試和運行的重要部分。關於預處理指令的官方解釋是這樣的:預處理指令提供按條件跳過源文件中的節、報告錯誤和警告條件,以及描繪源代碼的不同區域的能力。每種語言幾乎都有預處理指令這個東西吧。只是有些語言的用法不同了。下面將C#中的一些預處理指令列出來。
預處理器指令 描述
#define 它用於定義一系列成為符號的字符。 //常用
#undef 它用於取消定義符號。 //常用
#if 它用於測試符號是否為真。 //常用
#else 它用於創建復合條件指令,與 #if 一起使用。
#elif 它用於創建復合條件指令。
#endif 指定一個條件指令的結束。
#line 它可以讓您修改編譯器的行數以及(可選地)輸出錯誤和警告的文件名。
#error 它允許從代碼的指定位置生成一個錯誤。
#warning 它允許從代碼的指定位置生成一級警告。
#region 它可以讓您在使用 Visual Studio Code Editor 的大綱特性時,指定一個可展開或折疊的代碼塊。 //常用
#endregion 它標識着 #region 塊的結束。 //常用
好了,上代碼看看吧。
#define debug
//定義了debug這個符號
using System;
namespace gg
{
class one
{
#region 最大值函數
//這個預處理指令的作用是將一個程序塊容納起來,可以方便將程序塊折疊起來
public void max(int x, int y)
{
if (x > y)
{
Console.WriteLine("The Max is {0}", x);
}
else
{
Console.WriteLine("The Max is {0}", y);
}
}
#endregion
}
class a
{
#region 入口函數
//這個預處理指令的作用是將一個程序塊容納起來,可以方便將程序塊折疊起來
static void Main()
{
one a = new one();
#if (debug)
//如果debug被定義,就為真
{
a.max(3, 4);
Console.ReadKey();
}
#else
{
Console.WriteLine("hello world!!");
Console.ReadKey();
}
#endif
}
#endregion 函數的結束
}
}
這上面的有些預處理指使不好截圖哈,就沒有全部列舉了。