在C++中,我們可以通過#define這個指令定義所謂的符號常量,這種常量會被直接編譯到二進制代碼中去。在這種情況下,它與用const定義的常值變量的效果是基本類似。的,
例如:
但#define還有一個作用,就是改變編譯器行為,例如根據它決定是否要編譯某句代碼
在很多C++源文件中都會有下面這樣的代碼
#if !defined(AFX_MAINFRM_H__0EFEA8A4_112C_4528_B7A8_761F1B02C20C__INCLUDED_) //如果沒有定義
#define AFX_MAINFRM_H__0EFEA8A4_112C_4528_B7A8_761F1B02C20C__INCLUDED_ //那麼就定義
#if _MSC_VER > 1000 //如果某個符號常量大於1000
#pragma once
#endif // _MSC_VER > 1000
那麼,這個行為在.Net裡面是怎麼表現的呢?
1。 C#中繼承了#define作為編譯指令的作用。
#define DEBUG
【注意】在C#中,不可以給定義的符號賦值,例如下面的語句是無效的
#define DEBUG=TRUE
也就是說,#define只需要定義即可,而不要(也沒有必要)指定這個符號的值
後續代碼中,也是用#if這樣的語法進行判斷某個符號是否被定義。
2.VB.Net也有類似的實現,但它不使用#define關鍵字,而是用#const關鍵字
#Const MINI = 1
#Const VERSION = 1.0
Const MINI As String = "4"
#Region "這是一個代碼塊"
Sub Main()
#If MINI = 1 Then
Console.WriteLine("Hello.world")
#End If
End Sub
#End Region