コードは、次のセクションの数を持っている:彼らは、デバッグのために不可欠であり、(すべてのテスト構成のサポートなどをスレッド、I/Oを提供するために使用される)彼らは、コード内で複数回使用されているプリプロセッサマクロ:引数の挿入方法?
int filter;
#ifdef INPUTFILTER_FOO
LOG4CXX_DEBUG(log, "FOO filter used");
filter = F_FOO;
#endif
年頃のが、コードを厳しく見せて、それぞれのcategory_type名前空間に1つずつ、マクロで置き換えます。だから、
、次のように展開したい:
MACROSTUFFBAZ(log2, stuff, "BAZ")
< - テキスト部分には、クラスごとに一意であるので、それはあまりにもマクロに含まれる必要があります。マクロを定義するには
#ifdef INPUTSTUFF_BAZ
LOG4CXX_DEBUG(log2, "BAZ stuff used");
stuff = S_BAZ;
#endif
、これを使用することを計画:へ
debug.hpp:
#ifdef INPUTSTUFF_BAZ
#define MACROSTUFFBAZ ...
#else
#define MACROSTUFFBAZ
.. no code!
#endif
#endif
を(少なくともこれは、現在のものの明確な概要を提供します保護観察を受け、コードの周りを見ることなく)
'filter = F_FOO'と' stuff = S_BAZ'については明確ではありません:いつ 'S_'ですか?いつそれが 'F_'ですか?それはマクロパラメータに依存しますか? – icecrime
@icecrimeは、マクロ定義の値(ファイル名の接頭辞、カウンタ、遅延など)です。それらはパラメータに依存せず、代わりにマクロによって定義されます。 –