HI-TECH C で#ifdef __DEBUGを使う [PICkit3]
I2Cライブラリの開発ではDEBUGモードとRELEASEモードを切り替えて、何度もコンパイルしました。PIC18F2550はMPLAB IDEのプルダウン・メニューの操作だけで済むのですが、PIC16F887の方はmain.cの__CONFIGを毎回書き換えていたのです。
あるとき、BUILDウィンドウをスクロールするHI-TCH Cのコマンドを何気無く眺めていて”-D_DEBUG=1”という記述に気付きました。
『ん、これってシンボル定義のコンパイラ・オプション?』
試してみると・・・ビンゴ!
MPLAB IDEのプルダウン・メニューで”DEBUG”を指定するとこのオプションが指定され、”RELEASE”では指定されないことが分かりました。
つまり、以下のように記述すればモードを切り替える度に書き換えなくとも良くなるのです。
#ifdef __DEBUG
// for DEBUG
__CONFIG (FOSC_INTRC_NOCLKOUT & PWRTE_OFF & ... & DEBUG_ON );
#else
// for RELEASE
__CONFIG (FOSC_INTRC_NOCLKOUT & PWRTE_ON & ... & DEBUG_OFF );
#endif
”今頃気付いたのか!”ってお叱りを受けるかも知れませんが、HI-TECH Cのサンプル・プログラムには出てきません。また、MPLAB C18の例にも出てこない(多分ユーザの目に触れない所でやっている)ので、この機能の存在に気づかなかったのです。
まぁ、DEBUGモードとRELEASEモードの切り替えを何度も繰り返すことなど、あんまり無い(そうで有って欲しい)気もしますが、知っていて損は無い小技だと思います。
あるとき、BUILDウィンドウをスクロールするHI-TCH Cのコマンドを何気無く眺めていて”-D_DEBUG=1”という記述に気付きました。
『ん、これってシンボル定義のコンパイラ・オプション?』
試してみると・・・ビンゴ!
MPLAB IDEのプルダウン・メニューで”DEBUG”を指定するとこのオプションが指定され、”RELEASE”では指定されないことが分かりました。
つまり、以下のように記述すればモードを切り替える度に書き換えなくとも良くなるのです。
#ifdef __DEBUG
// for DEBUG
__CONFIG (FOSC_INTRC_NOCLKOUT & PWRTE_OFF & ... & DEBUG_ON );
#else
// for RELEASE
__CONFIG (FOSC_INTRC_NOCLKOUT & PWRTE_ON & ... & DEBUG_OFF );
#endif
”今頃気付いたのか!”ってお叱りを受けるかも知れませんが、HI-TECH Cのサンプル・プログラムには出てきません。また、MPLAB C18の例にも出てこない(多分ユーザの目に触れない所でやっている)ので、この機能の存在に気づかなかったのです。
まぁ、DEBUGモードとRELEASEモードの切り替えを何度も繰り返すことなど、あんまり無い(そうで有って欲しい)気もしますが、知っていて損は無い小技だと思います。
|
|
|
コメント 0