linux C下 利用巨集函式列印除錯資訊

2021-08-10 21:25:41 字數 1829 閱讀 9144

這個**裡面

把字串根據指定的分割符可以拆分,合併

主要是運用了乙個巨集來列印除錯資訊

函式除錯好以後可以注釋掉此行使,程式列印除錯資訊的**不編譯進去

__line__:在源**中插入當前源**行號;

__file__:在原始檔中插入當前源檔名;

__date__:在原始檔中插入當前的編譯日期

__time__:在原始檔中插入當前編譯時間;

__stdc__:當要求程式嚴格遵循ansi c標準時該標識被賦值為1;

__cplusplus:當編寫c++程式時該識別符號被定義。

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define __debug__  

//#undef  __debug__  //函式除錯好以後可以注釋掉此行使,程式列印除錯資訊的**不編譯進去

#ifdef __debug__  

#define debug(format,...) \

printf("file: "__file__", line: %05d, function: %s ::"format"\n", __line__,__function__, ##__va_args__)  

#else  

#define debug(format,...)  

#endif  

void getchildstr(unsigned char child[30],char *fatherstr,char key)

}void cat_childstr(unsigned char child[30],int child_num,char *fatherstr,char key)

fatherstr[len]='\0';

}int main( void )

;char fatherstr[17]=;

int  chil_num = 4;

int i;

for(i=0;i<4;i++)

cat_childstr(color_child,4,fatherstr,',');

debug("%s",fatherstr);

debug("%s\n\n",fatherstr);

//結果:

我這個專案唯一的串列埠用來控制微控制器了,所以如果要用串列埠來除錯,必須在編譯的時候遮蔽掉所有串列埠讀寫函式,可以用以下幾步做到

1、將所有與串列埠讀寫有關的函式寫到乙個檔案裡

2、所有的函式裡面有預編譯命令處理

int  function( )

#ifdef  __seriol__

函式體return 0;

#else

return  -1;  

#endif

3、在次檔案頭上加上

#define __seriol__  

//#undef  __seriol__ 

如果其他除錯完成以後把//注釋去掉即可。

4、本檔案的函式在其他檔案的函式中正常呼叫即可,只是有巨集的時候是個空函式,直接return -1編譯器不會報錯。

利用巨集控制列印

利用巨集控制列印 在程式除錯時,我們經常需要輸出一些除錯資訊,當除錯完畢後,就不再需要使用了。那怎麼快速的在除錯狀態和發布狀態切換呢?通常我們使用預編譯加巨集定義來處理這個問題,例如 ifdef debug 除錯 endif 如果我們使用printf來顯示一些除錯資訊,那麼每個地方都加上 ifdef...

Linux下利用printf函式列印帶顏色的字串

v 相信大家在除錯 或者是在做某個專案的介面時候,會覺得顯示在終端上的字型顏色太單調了。其實,在linux環境下利用 printf 函式就可以實現字型顏色的改變。不只是字型顏色的改變,利用 printf 函式你還可以實現設定高亮度 設定下劃線 閃爍 等等效果。利用好 printf 函式可以使你編寫的...

利用巨集自動產生Get Set函式

c 中的巨集,是將乙個識別符號定義為乙個字串。在源程式中,該識別符號會被指定的字串來代替。格式 define 巨集名 參數列 巨集體 define sg m type,m public void set m const type in m type m private type m 1.巨集僅進行簡...