這個**裡面
把字串根據指定的分割符可以拆分,合併
主要是運用了乙個巨集來列印除錯資訊
函式除錯好以後可以注釋掉此行使,程式列印除錯資訊的**不編譯進去
__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.巨集僅進行簡...