質問
現在、テスト用のハードウェアに機能をオフにする#define in cファイルがいくつかあります。ただし、Doxygenも定義されていない場合は、それらを文書化したいと思います。
例えば:
これは正常に機能します:
/// \def SIMULATE_SOME_HW_INTERFACE
/// Define this when you want to simulate HW interface.
#define SIMULATE_SOME_HW_INTERFACE
#defineを#undefに変更すると、doxygenで警告が表示されると、Doxygen生成出力には表示されません。この#defineが定義されているか、未定義であるかを文書化したいと思います。
#undefを文書化するようにdoxygenを強制するにはどうすればよいですか?
解決
それらをDoxygenによってのみ含まれるヘッダーファイルに定義します(メインソースから別のディレクトリツリーに入れます)。
このヘッダーファイルは、doxygenセットアップでのみ定義することを定義してラッピングして保護します。
#ifdef ONLY_FOR_DOXYGEN
/// \def SIMULATE_SOME_HW_INTERFACE
/// Define this when you want to simulate HW interface.
#define SIMULATE_SOME_HW_INTERFACE
#endif
私はこれを条件付きで含めるために使用しました 軽量クラスの定義 MFCのベースクラスのようなものは、MFCのすべてを解析することなく、クラス階層のベースとして表示されます。
他のヒント
#defineの下に#undefを追加することで、Kludgyの方法を見つけました。このようにして、Doxygen用に定義されていますが、コンパイラではすぐに定義されています。
/// \def SIMULATE_SOME_HW_INTERFACE
/// Define this when you want to simulate HW interface.
/// Comment out #undef to simulate HW interface
#define SIMULATE_SOME_HW_INTERFACE
#undef SIMULATE_SOME_HW_INTERFACE
事前定義されたオプションを使用して、doxyconfigファイルでsimulate_hw_interfaceを設定する方法を見つけようとしていました。それを機能させることができませんでした。これがこれまでの私の最良の解決策です。
メインヘッダーファイルでこのようなコンパイラーフラグを文書化することで問題を解決しました。
/**
* \defgroup flags Compilerflags
*/
/**
* \def MY_FLAG
* \ingroup flags
* Dokumentation....
*/
#ifndef MY_FLAG
#define MY_FLAG
#undef MY_FLAG
#else
#define MY_FLAG
#endif
このようにしてすべてが正常に機能します:doxygenとコンパイルとあなたはあなたの旗をコマンドラインで指定し続けることができます...