C语言知识点--define的替换列表为空是怎么回事?
我們在學習C語言的過程中一般遇到的兩種預定義的語句:一種是帶參數的預定義,也就是我們所說的常函數,比如說#define ADD(x, y) x+y;一種是不帶參數的預定義,也就是預定義變量,例如#define PI 3.1415926。
那么這種形式你是否見過:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #define DEBUG
你沒看錯,就是這樣,替換列表怎么不見了?怎么和我平時見到的預定義語句不一樣呢?
雖然這樣的寫法單看很奇怪,但卻是合法的。
我們來結合#ifdef來看,就不覺得奇怪了。
#ifndef NVM #define NVM #define NVM_PARAMETER 1#endif這段代碼的意思是:檢測程序是否已經預定義了NVM,如果已經定義,那么就不再執行#ifndef中的語句,如果沒有定義,定義沒有替換列表的NVM常量,并定義NVM_PARAMETER,之后結束。
那么到這里大家可能已經明白了,沒有替換列表的宏定義其實單獨拿出來沒有意義,但可以用來控制語句的執行,這樣可以避免重復執行某些預定義的語句,提高程序運行的效率。
所以再遇到沒有替換參數得到宏定義的時候,要和條件判斷語句結合著來看哦。
這個知識點是博主在工作時遇到的小知識點,由于網上不容易查到資料,我就詳細整理了一下,能幫到大家就更好了,如果哪里說的有錯,希望各位批評指正!謝謝!
總結
以上是生活随笔為你收集整理的C语言知识点--define的替换列表为空是怎么回事?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win7 的序列号
- 下一篇: 通过scheme协议启动app