1. 程式人生 > >關於移植過程中,存在大量LCD log(不定形參...)等除錯屬性函式巨集定義到printf

關於移植過程中,存在大量LCD log(不定形參...)等除錯屬性函式巨集定義到printf

嵌入式開發過程中,遇到移植第三方協議棧,有時存在大量LCD log等除錯屬性函式。我們希望儲存原生的除錯輸出資訊,通過對LCDlog等除錯功能進行printf重新巨集定義。

在第三方程式存在大量的除錯屬性函式,如:

#define  LCD_UsrLog(format, ...)    
  #define  LCD_ErrLog(format, ...)    

在沒有相應的LCD硬體支援,但我們希望儲存這些除錯輸出資訊,而不是重新去編寫除錯資訊。

此時,我們可以重新巨集定義到printf(format, ...),除錯輸出資訊列印到串列埠除錯軟體。

巨集定義如下:(##:但應用過程中不存在不定形參...時,消除“,”的錯誤)

 #define  LCD_UsrLog(format, ...)    printf(format, ##__VA_ARGS__)
  #define  LCD_ErrLog(format, ...)    printf("ERROR: "); printf(format, ##__VA_ARGS__)

實現除錯資訊列印到串列埠除錯軟體上。

附:

MDK hlep文件:

#define debug(format, ...) fprintf (stderr, format, __VA_ARGS__)
void Variadic_Macros_0()
{
     debug ("a test string is printed out along with %x %x %x\n", 12, 14, 20);
}
IAR help文件:

#define MYSEG "YYY"
#define X(str)__no_alloc_str(str @ MYSEG)
extern void dbg_printf(unsigned long fmt, ...);
#define DBGPRINTF(fmt, ...)dbg_printf(X(fmt), __VA_ARGS__)
void 
foo(int i, double d)
{
 
 
DBGPRINTF("The value of i is: %d, the value of d is: %f", i,d);
}