在嵌入式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 ...