3

私は現在、テストのためにハードウェアの一部の機能をオフにするcファイルにいくつかの#defineを持っています。ただし、定義されていない場合は、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が定義されているか、定義されていないかを文書化したいと思います。

どうすればdoxygenに#undefを文書化させることができますか?

4

3 に答える 3

3

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を解析しなくてもクラス階層のベースとして表示されるようにしました。

于 2010-09-11T08:07:28.333 に答える
1

#defineの下に#undefを追加することで、厄介な方法を見つけました。このように、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

PREDEFINEDオプションを使用してDoxyconfigファイルにSIMULATE_HW_INTERFACEを設定する方法を理解しようとしていました。動作させることができませんでした。これが私のこれまでの最善の解決策です。

于 2010-08-24T18:20:45.040 に答える
0

メインヘッダーファイルに次のようなコンパイラフラグを文書化することで問題を解決しました。

/**
 * \defgroup flags Compilerflags
 */

/**
 * \def MY_FLAG
 * \ingroup flags
 * Dokumentation....
 */
#ifndef MY_FLAG
#define MY_FLAG
#undef MY_FLAG
#else
#define MY_FLAG
#endif

このようにすべてが正常に機能します:doxygenとコンパイル、そしてコマンドラインでフラグを指定し続けることができます...

于 2011-04-29T13:52:57.550 に答える