Keil c中自定義帶可變引數的printf函式

2022-08-15 07:54:11 字數 910 閱讀 8488

在嵌入式c中,往往採用串列埠列印函式來實現程式的除錯,而在正式程式中一般是不需要這些列印**的,通常做法是在這些除錯用列印**的前後設定乙個巨集定義塊來實現是否啟用這段**,比如:

//

other user code ...

#ifdef use_debug

printf(

"the monitor count is %d

", count);

#endif

//other user code ...

如果定義了use_debug,則列印起作用;否則上述**塊不會被編譯。

但上述**塊存在乙個問題,當需要列印的地方很多時,都需要寫這麼一段,程式**會顯得比較臃腫和繁瑣;如果能自己定義乙個類printf列印函式,在函式內實現上述**塊,這樣**是比較簡便的,本文即實現該功能,自定義函式實現如下:

#ifdef use_debug  

#include

//呼叫標頭檔案

#define bufsize 120

char buffer[bufsize];  //

待列印字串快取

#endif

//自定義列印函式

void envprintf(const

char *str, ...)

上述**中的vsnprintf函式將多變引數轉換成字串並儲存至buffer中; 最後通過printf列印出來。 

改進後程式中列印**如下:

//

other user code ...

envprintf(

"the monitor count is %d

", count);

//other user code ...

如何自定義可變引數函式

在我們編寫 中,有時需要我們自定義可變引數函式,像庫函式中有pirntf,ioctl都是可變引數函式,如果我們要實現自定義可變引數,一般要實現像int ioctl int fd,unsigned long request,這種功能的。下面講解如何實現ioctl這個型別函式 1.通過分析printf函...

CUDA Thrust 帶引數自定義函式 6

thrust自定義函式非常靈活,給編寫程式帶來方便,上次的自定義函式沒有帶引數,這次 筆者寫乙個帶引數的自定義函式。通過這次寫帶引數的自定義函式,我對如何用transformation 呼叫函式有了更深的理解。include include include include include inclu...

自定義引數 Python自定義函式引數

1.種類 1 位置引數 x就是位置引數 usr bin env python coding utf 8 def power x result x x print result 2 預設引數n就是預設引數 usr bin env python coding utf 8 def power x,n 1 ...