Linux内核中的宏可变参数(GCC的宏可变参数)。 写内核模块的时候为了调试方便,经常需要wrap一下printk函数。下面的宏定义非常有实用价值。 注意两个井号~~ 记到博客里~~ #define seclvl_printk(verb, type, fmt, arg...) \ do { \ if (verbosity >= verb) { \ static unsigned long _prior; \ unsigned long _now = jiffies; \ if ((_now - _prior) > HZ) { \ printk(type "%s: %s: " fmt, \ MY_NAME, __FUNCTION__ , \ ## arg); \ _prior = _now; \ } \ } \ } while (0)