セミホスティング経由のprintfをリリース時に削除する
テクニカル・ノート 181224J
アーキテクチャ:
All
コンポーネント:
compiler
更新日:
2019/01/22 8:24
はじめに
本テクニカルノートでは、リリース時にセミホスティング経由のprintfを削除する方法について説明します。
解説
デバッグ時にprintfを使用していた場合、リリース用に変更する際にprintfを削除する必要がありますが、printfは可変長引数のため、単純な置き換えができません。
C99では可変長引数のマクロが使用できるので以下の記述でprintfを何もしない記述にすることができます。
#define printf(…)
ただし、C89では適用できませんので、ご注意ください。
下記のようにコンパイルオプションで切り替えるようにしておけば、コードの修正なしで、ビルド構成の切り替えのみでprintfを無効にできるのでお勧めです。
#ifdef DEBUG
#define DBG_PRINTF(fmt, …) printf(fmt, ##__VA_ARGS__)
#else
#define DBG_PRINTF(fmt, …)
#endif
まとめ
リリース時にprintfを無効にする方法について説明しました。
全ての製品名は、それぞれの所有者の商標または登録商標です