close
在 Linux driver 開發的初期我們常會為了程式的開發方便及除錯,在裡面加了很多的debugmessage,
等到開發到了一定的階段才會拿掉。
首先先來看一下程式碼
/* Debug macros*/
#if defined(DEBUG) /* limited debug messages */
#define DBG(fmt,arg...) \ printk(KERN_INFO "[DRV] :"fmt"\n",## arg)
#define DTL(fmt,arg...) \ printk(KERN_INFO "[DRV] :"fmt"\n",## arg)
#endif
我們可以利用 gcc -E 來觀看程式碼被展開之後的樣子,例如:
ERR("%s:%d",filename,line)
會被展開為:
printk(KERN_ERR "[DRV]:%s:%d\n", filename, line)
-------------------
其中"%s:%d"會被對應到fmt,
而 filename, line 會被對應到arg...,
如何把 arg 對應到多個變數呢? 就是靠... 和 ## 來達成,
arg... 表示arg的參數可以是零個或多個,這些由參數以及參數之間的逗號構成。
##arg 表示 arg 之前的字串要保留
全站熱搜
留言列表