2008年12月9日 星期二

Usage of #define



a. 最大、最小值比較

#define min(x,y) ({ typeof(x) _x = (x); typeof(y) _y = (y); \
(void) (&_x == &_y); _x < _y ? _x : _y; })
#define max(x,y) ({ typeof(x) _x = (x); typeof(y) _y = (y); \
(void) (&_x == &_y); _x > _y ? _x : _y; })


b. 用於除錯:

#ifdef DEBUG
#define PDEBUG(fmt, arg...) printk(fmt, ##arg)
#define ENTER() PDEBUG("[%-20s] : Enter...\n", __FUNCTION__)
#define LEAVE() PDEBUG("[%-20s] : Leave...\n", __FUNCTION__)
#else
#define PDEBUG(fmt, arg...)
#define ENTER()
#define LEAVE()
#endif

更簡單的表示:
#define DBG(msg, arg...) printf("%s:%s(%d): " msg, __FILE__, __FUNCTION__, __LINE__, ##arg)


沒有留言: