常常寫程式都需要除錯
可是當不需要除錯的時候
要把每一行除錯的程式都註解掉(節省code size 和 提升執行速度)
這樣超級麻煩的
我以前常常這樣做
很累,很辛苦
最近學了一招不錯用的debug方式
只要設定define,就讓程式可以原封不動的做調整
#include <stdio.h>
typedef unsigned char u8;
#define DEBUG
void assert_failed(u8* file, int line,int expr);
#ifdef DEBUG
#define assert_param(expr) ((expr) ? assert_failed((u8 *)__FILE__, __LINE__,(expr)) : (void)0)
/*******************************************************************************
* Function Name : assert_failed
* Description : Reports the name of the source file and the source line number
* where the assert_param error has occurred.
* Input : - file: pointer to the source file name
* - line: assert_param error line source number
* Output : None
* Return : None
*******************************************************************************/
void assert_failed(u8* file, int line,int expr){
printf("Wrong parameters value: file %s on line %d\r\n", file, line);
printf("data: %d\r\n", expr);
}
#else
#define assert_param(expr) ((void)0)
#endif/* DEBUG */
int main(void){
assert_param(66);
while(1);
}
程式只要有定義
#define DEBUG 的話,那麼就會列印資料出來
如果沒有的話,compiler就會呼略這行程式
題外話
上面的這個程式是會有bug的
當assert_param(0) 時,這樣就不會送出0,而是呼略掉這個指令
就留點作業給大家做看看吧
可以利用這樣的想法,規劃自己的debug程式
ps:有效率的管理自己的程式真的非常的重要
沒有留言:
張貼留言