java字符串批量替換 為什么大部分編程語言棄用了宏?
為什么大部分編程語言棄用了宏?現(xiàn)代編程語言一般都支持編譯時常量,常量在大多數(shù)情況下可以代替宏,因此不再引入宏功能。為什么C和C應(yīng)該支持宏?當(dāng)時的編譯技術(shù)還不夠成熟,所以c語言代碼文件需要分為頭文件和源
為什么大部分編程語言棄用了宏?
現(xiàn)代編程語言一般都支持編譯時常量,常量在大多數(shù)情況下可以代替宏,因此不再引入宏功能。
為什么C和C應(yīng)該支持宏?當(dāng)時的編譯技術(shù)還不夠成熟,所以c語言代碼文件需要分為頭文件和源文件兩類。在編譯期間,還有一個稱為預(yù)處理階段的附加階段,在該階段中,宏將被實際值替換。
現(xiàn)代編程語言不再需要區(qū)分頭文件和源文件,并且沒有預(yù)處理階段,因此為了使用宏而添加編譯階段是拋棄了基本要素,因此今天的編程語言根本不使用宏。
當(dāng)然,有些朋友可能會說宏遠(yuǎn)不止是常量定義。我也承認(rèn)宏可以擴(kuò)展成非常復(fù)雜的東西,但在這個時候,宏是一個非常危險和復(fù)雜的特性。我不認(rèn)為編程語言在做這些事情上有什么意義。與其關(guān)注宏,不如給語言添加一些語法糖。
在Java中如何定義宏?
宏定義通常以“define**”的形式出現(xiàn)在C/C代碼中。Java中也有“宏變量”,但形式不同。
Final是Java中的一個關(guān)鍵字,用于修改類、成員變量、局部變量和方法來表示不變性。final修改變量時,已指定變量的初始值。然后可以在編譯時確定變量。在本質(zhì)上,最后一個變量是一個“宏變量”。編譯器將用變量的值替換程序中使用變量的所有位置。