大家都知道printf是不定参数的函数,那是否有不定参数的宏呢?可以!在最近工作中学要把一些debug信息打印出来,想定义一个宏printf_debug来做这件事情。当时搜索的两篇文章忘了复制下来,可以去搜索一下看看原理更容易理解。
#if(PRINTF_DEBUG_MSG==NU_TRUE) #if(C99_SUPPORT==NU_TRUE) #defineprintf_debug(...)printf_uart(__VA_ARGS__) /* usage : printf_debug("%s.%d", "debug", 1); */ #else #defineprintf_debug(args)(printf_uart args) /* usage : printf_debug(("%s.%d", "debug", 1)); (Note : Double parentheses)*/ #endif #else #defineprintf_debug(...) #endif |
函数为:
voidprintf_uart(constchar*format,...) { va_listarg; chartmp[255]; va_start(arg,format); vsprintf(tmp,format,arg); va_end(arg); uart_write(DATA_PORT,tmp,strlen(tmp)); } |
文章转自:http://blog.chinaunix.net/space.php?uid=632207&do=blog&id=2083335