五種c語言基本運算符(運算符與運算符)
2023-10-11 16:07:04
1、#運算符
我們平時使用帶參宏時,字符串中的宏參數是沒有被替換的。例如:
輸出結果為:
然而,我們期望輸出的結果是:
這該怎麼做呢?其實,C語言允許在字符串中包含宏參數。在類函數宏(帶參宏)中,#號作為一個預處理運算符,可以把記號轉換成字符串。例如,如果A是一個宏形參,那麼#A就是轉換為字符串」A」的形參名。這個過程稱為字符串化(stringizing)。以下程序演示這個過程:
輸出結果為:
這就達到我們想要的結果了。所以,#運算符可以完成字符串化(stringizing)的過程。
2、##運算符
與#運算符類似,##運算符可用於類函數宏(帶參宏)的替換部分。##運算符可以把兩個記號組合成一個記號。例如,可以這樣做:
然後,宏XNAME(4)將展開x4。以下程序演示##運算符的用法:
輸出結果為:
注意:PRINT_XN宏用#運算符組合字符串,##運算符把記號組合為一個新的標識符。
其實,##運算符在這裡看來並沒有起到多大的便利,反而會讓我們感覺到不習慣。但是,使用##運算符有時候是可以提高封裝性及程序的可讀性的。如跑實時作業系統的stm32程序中,關於gpio的硬體驅動中有如下代碼:
假設這樣使用該宏:
該宏將展開為:
然後這就可以很方便的將要使用的硬體引腳這麼一一列出來,然後再拿去進行配置:
以上就是關於#運算符與##運算符的筆記,用#運算符組合字符串,##運算符把記號組合為一個新的標識符。如有錯誤歡迎指出。
ps:需要電子書籍、相關學習視頻教程、項目源碼、開發工具等學習資料可以關注我頭條號,然後私信我【C語言資料】幾個字就可以免費領取了。(注意私信我關鍵字不要寫錯,可以複製)從基礎到項目實戰全方面帶你學習C語言開發,無論你是大牛還是小白,是想轉行還是想入行都可以來了解一起進步一起學習!
,