2016年11月20日日曜日

デバック用print文記述いろいろ

C言語でのプログラムで、デバック用のprint文の扱いをこれまで、ifdefでやっていてprint文と合わせて3行になって見栄えが悪いと感じていました。

-例--------
#ifdef DEBUG
printf("debug \n");
#endif // DEBUG
-----------

mbedのlibraryを見ていたらスマートな方法で対応していました。

UART access over BLE
---------------------------------
#define NEED_CONSOLE_OUTPUT 1 /* Set this if you need debug messages on the console;
* it will have an impact on code-size and power consumption. */

#if NEED_CONSOLE_OUTPUT
#define DEBUG(STR) { if (uart) uart->write(STR, strlen(STR)); }
#else
#define DEBUG(...) /* nothing */
#endif /* #if NEED_CONSOLE_OUTPUT */
-----------------------------


などが出てきました。

"デバック256"を参考に、
-------------------------
#define DEBUG
#ifdef DEBUG
#define DEBUG_PRINT(...) printf(__VA_ARGS__)
#else
#define DEBUG_PRINT(...)
#endif // DEBUG

                strcpy(fileName, p->d_name);
                DEBUG_PRINT("detect = %s\n",fileName);
                ans = true;
------------------------
こんな感じで使ってみました。