C++ #define預(yù)處理指令特點(diǎn)評(píng)比
C++編程語(yǔ)言應(yīng)用方式靈活,它的出現(xiàn),給程序員帶來(lái)了很多幫助。那么,同其他編程語(yǔ)言相比它又具有哪些特點(diǎn)呢?我們先來(lái)從C++ #define預(yù)處理指令的特點(diǎn)看起,通過(guò)它來(lái)和其他語(yǔ)言進(jìn)行對(duì)比。
C++ #define預(yù)處理指令定義所謂的符號(hào)常量,這種常量會(huì)被直接編譯到二進(jìn)制代碼中去。在這種情況下,它與用const定義的常值變量的效果是基本類似。的,
但#define還有一個(gè)作用,就是改變編譯器行為,例如根據(jù)它決定是否要編譯某句代碼
在很多C++源文件中都會(huì)有下面這樣的關(guān)于C++ #define預(yù)處理指令的代碼
- #if !defined(AFX_MAINFRM_H__0EFEA8A4_112C_4528_
B7A8_761F1B02C20C__INCLUDED_) //如果沒(méi)有定義- #define AFX_MAINFRM_H__0EFEA8A4_112C_4528_B7A8_
761F1B02C20C__INCLUDED_ //那么就定義- #if _MSC_VER > 1000 //如果某個(gè)符號(hào)常量大于1000
- #pragma once
- #endif // _MSC_VER > 1000
那么,這個(gè)行為在.NET里面是怎么表現(xiàn)的呢? #t#
1。 C#中繼承了#define作為編譯指令的作用。
#define DEBUG
【注意】在C#中,不可以給定義的符號(hào)賦值,例如下面的語(yǔ)句是無(wú)效的
#define DEBUG=TRUE
也就是說(shuō),#define只需要定義即可,而不要(也沒(méi)有必要)指定這個(gè)符號(hào)的值
后續(xù)代碼中,也是用#if這樣的語(yǔ)法進(jìn)行判斷某個(gè)符號(hào)是否被定義。
2. VB.NET也有類似的實(shí)現(xiàn),但它不使用#define關(guān)鍵字,而是用#const關(guān)鍵字
- #Const MINI = 1
- #Const VERSION = 1.0
- Const MINI As String = "4"
- #Region "這是一個(gè)代碼塊"
- Sub Main()
- #If MINI = 1 Then
- Console.WriteLine("Hello.world")
- #End If
- End Sub
- #End Region
以上就是C++ #define預(yù)處理指令與其他語(yǔ)言中不同之處的介紹。