2013年8月23日 星期五

在程式中開關 log 的方法

撰寫程式, 不論是為了除錯, 或是了解程式運作的狀態, 需要在程式代碼中 加進一些 log.
一旦加入 log, 當然也需要一個開啟和關閉 log 的機制. 而且必須是一個方便使用的開關機制.

一般來說, 我們可能會使用 以下的方式在程式代碼中加入 log

  #define MY_DEBUG
  .......

  #ifdef  MY_DEBUG 
  printf("This is a log.\n");
  #endif
  .......

使用 MY_DEBUG 控制 log 機制的開啟和關閉.
這種做法的缺點是 加入 log 的同時也必須跟著加入 #ifdef 和 #endif. 撰寫上不方便 且程式代碼會看起來比較凌亂.

另一種比較好的做法如下:

  #define XPRINTF(fmt,...)   printf(fmt, __VA_ARGS__)

在需要加 log的地方, 現在只需要加入一行:

  XPRINTF("This is %d-th  log,\n", i);

若是需要關閉 log, 只需要修改 #define 的部分:
  #define XPRINTF(fmt,...)   // printf(fmt, __VA_ARGS__)

以上是 Visual Stuio 的語法, gcc 的語法如下:
  #define XPRINTF(fmt, arg...)  LOGD(fmt, ##arg)
或是
  #define XPRINTF(fmt, arg...)  printf(fmt, ##arg)

沒有留言:

張貼留言