<delect id="sj01t"></delect>
  1. <em id="sj01t"><label id="sj01t"></label></em>
  2. <div id="sj01t"></div>
    1. <em id="sj01t"></em>

            <div id="sj01t"></div>
            C語言

            嵌入式c語言調試開關的技巧

            時間:2025-01-24 09:48:39 C語言 我要投稿
            • 相關推薦

            嵌入式c語言調試開關的技巧

              在調試程序時,經常會用到assert和printf之類的函數,我最近做的這個工程里就有幾百個assert,在你自認為程序已經沒有bug的時候,就要除去這些調試代碼,應為系統在正常運行時這些用于調試的信息是無用的,而且會占用時間和空間。怎么刪除呢,以下僅供參考!

              下面給出最簡單的一種方法:

              #define DEBUG

              #ifdef DEBUG

              #define PRINTF(x) printf x

              #else

              #define PRINTF(x)  ((void)0)

              #endif

              使用時,PRINTF(( "Hello World! " ));

              注意這里是兩個括號,一個會報錯的

              不使用時,直接將"#define DEBUG"屏蔽掉

              另外一個調試時常用的方法是assert,還是在一個頭文件里,這里用的是STM32函數庫的例子

              #ifdef DEBUG 1

              /************************************************************

              * Macro Name : assert_param

              * Description : The assert_param macro is used for function's parameters check.

              * It is used only if the library is compiled in DEBUG mode.

              * Input : - expr: If expr is false, it calls assert_failed function

              * which reports the name of the source file and the source

              * line number of the call that failed.

              * If expr is true, it returns no value.

              * Return : None

              ************************************************************/

              #define assert_param(expr) ((expr) ? (void)0 : assert_failed((u8 *)__FILE__, __LINE__))

              /* Exported functions -------------------------------------*/

              void assert_failed(u8* file, u32 line);

              #else

              #define assert_param(expr) ((void)0)

              #endif/* DEBUG */

              //assert_failed此函數要自己定義

              #ifdef DEBUG

              /************************************************************

              * 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, u32 line)

              {

              /* User can add his own implementation to report the file name and line number,

              ex: printf("Wrong parameters value: file %s on line %d ", file, line) */

              /* Infinite loop */

              while (1){

              }

              }

              #endif

            【嵌入式c語言調試開關的技巧】相關文章:

            嵌入式C語言優化技巧10-27

            嵌入式C語言內存操作技巧07-25

            嵌入式C語言優化小技巧09-09

            C語言中用ASSERT調試的8大技巧06-26

            C語言中用ASSERT調試的八大技巧06-18

            在C語言中用ASSERT調試的八個技巧11-11

            C語言調試器是如何工作的10-06

            嵌入式C語言編程小知識12-20

            嵌入式C語言編程知識總結06-04

            <delect id="sj01t"></delect>
            1. <em id="sj01t"><label id="sj01t"></label></em>
            2. <div id="sj01t"></div>
              1. <em id="sj01t"></em>

                      <div id="sj01t"></div>
                      黄色视频在线观看