明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

C++編程調(diào)試小技巧

[摘要]1.調(diào)試標(biāo)記   適用預(yù)處理#define定義一個(gè)或多個(gè)調(diào)試標(biāo)記,在代碼中把調(diào)試部分使用#ifdef 和#endif 進(jìn)行管理。當(dāng)程序最終調(diào)試完成后,只需要使用#undef標(biāo)記,調(diào)試代碼就會消失。常用的調(diào)試標(biāo)記為DEBUG, 語句序列:   #define DEBUG    #ifdef DEBU...
1.調(diào)試標(biāo)記

  適用預(yù)處理#define定義一個(gè)或多個(gè)調(diào)試標(biāo)記,在代碼中把調(diào)試部分使用#ifdef 和#endif 進(jìn)行管理。當(dāng)程序最終調(diào)試完成后,只需要使用#undef標(biāo)記,調(diào)試代碼就會消失。常用的調(diào)試標(biāo)記為DEBUG, 語句序列:

  #define DEBUG 

  #ifdef DEBUG  

  調(diào)試代碼 

  #endif

  2.運(yùn)行期間調(diào)試標(biāo)記

  在程序運(yùn)行期間打開和關(guān)閉調(diào)試標(biāo)記。通過設(shè)置一個(gè)調(diào)試bool標(biāo)記可以實(shí)現(xiàn)。這對命令行運(yùn)行的程序更為方便。

  例如下面代碼  

  #include<iostream>

  #include <string>

  using namespace std;

  bool debug =false;

  int main(int argc,char*argv[])

  {

   for(int i=0;i<argc;i++)

    if(string(argv[i])==“--debug=on“)

    debug = true;

    bool go=true;

    while(go)

    {

     if(debug)

     {

      調(diào)試代碼

     }else {}

    }

  }

  3.把變量和表達(dá)式轉(zhuǎn)換成字符串

  可是使用字符串運(yùn)算符來實(shí)現(xiàn)轉(zhuǎn)換輸出定義  

  #define PR(x) cout<<#x”=”<<x<<' '

  4.c語言的assert()

  該宏在<assert>中,,當(dāng)使用assert時(shí)候,給他個(gè)參數(shù),即一個(gè)判讀為真的表達(dá)式。預(yù)處理器產(chǎn)生測試該斷言的代碼,如果斷言不為真,則發(fā)出一個(gè)錯(cuò)誤信息告訴斷言是什么以及它失敗一會,程序會終止! 

  #include< assert>

  using namsapce std;

  int main()

  {

   int i=100;

   assert(i!=100); //Fails

  }

  當(dāng)調(diào)試完畢后在#include<assert>前加入#define NDEBUG即可消除紅產(chǎn)生的代碼

  }