外部ハードウェアに依存する組み込み C プロジェクトに取り組んでいます。ハードウェアを使用せずにシステムをシミュレートできるように、これらの部分にアクセスするコードをスタブアウトしたいと考えています。今までいくつかのマクロを使用してきましたが、これにより本番コードを少し変更せざるを得なくなりました。これは避けたいと思います。
例:
stub.h
#ifdef _STUB_HW
#define STUB_HW(name) Stub_##name
#else /*_STUB_HW*/
#define STUB_HW(name) name
#endif /*_STUB_HW*/
my_hw.c
WORD STUB_HW(clear_RX_TX)()
{ /* clear my rx/tx buffer on target HW */ }
test_my_hw.c
#ifdef _STUB_HW
WORD clear_RX_TX()
{ /* simulate clear rx/tx buffer on target HW */ }
このコードを使用すると、プリプロセッサ タグを使用してスタブのオン/オフを切り替えることができます_STUB_HW
。prod コードを変更せずに、多くの ifdef を回避することなく、これを実現する方法はありますか。また、回避できる場合は、同じファイルに製品コードとテスト コードを混在させません。テスト コードがどのように見えるかは、製品コードから可能な限り除外できる限り気にしません。
編集:
ファイル全体を置き換えずに関数を選択/名前変更できるといいですね。で始まるすべての関数を取り、新しい名前を付けてから、可能であればにnRF_##
挿入test_nRF_##
するようにnRF_##