C語言是如何定義常量的?const定義的算不算是常量?
常見的有這么幾種方式。
首先就是宏定義,使用 define 來定義。
宏的特點就是在預處理的時候被替換,比如這個地方的 SIZE,預處理后就會變成數字 5。
第二種跟宏定義類似,常量也可以在編譯的時候通過編譯器傳入。
以 gcc 為例,編譯的時候提供 -D 選項,同樣會在預處理的時候替換成相應的數字。
第三種枚舉,使用 enum 關鍵字。
枚舉的特點是默認從 0 開始,逐漸遞增。如果需要大量含義相同的常量,可以考慮使用枚舉。
下面要說的就是 const,定義數組的時候,如果數組的長度僅僅用 const 來修飾,在編譯的時候就會提示錯誤。
const修飾的不是常量,屬于只讀變量,這一點在《C專家編程》中也有描述。在一個符號前面加上 const 限定符只是表示這個符號不能被賦值。
為了解決這個問題,C23專門引入了新的關鍵字 constexpr,用 constexpr 修飾的才是真正的常量,不管是用它定義數組長度,還是給枚舉賦值都可以。這是個正兒八經的常量。
除了上面幾種,代碼中常見的還有字符串常量,比如這樣的,"helloworld"屬于字符串常量,在代碼運行過程中不能修改。
還有沒有其他定義常量的方法,如果有遺漏,歡迎大家在評論區補充。
-
C語言
+關注
關注
180文章
7630瀏覽量
140322 -
CONST
+關注
關注
0文章
45瀏覽量
8388
原文標題:const定義的是不是常量
文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
帶你在單片機編程中熟練使用const(可下載)
非屏蔽網線對接頭是不是不是屏蔽的
LMP91200在不使用SPI接口時,CSB是不是仍舊必須接地?
求助,以下電流和電壓的測量的原理圖是不是正確的?
ADS1281是不是不能使用sync引腳進行同步?
SV中define宏定義的用法
是不是所有的運放都需要偏置回路?
TRF37D73噪聲值是不是越小越好?
技術干貨驛站 ▏深入理解C語言:掌握常量,讓你的代碼更加穩固高效!

__disable_irq()和__enable_irq()函數的具體定義

評論