2010-12-27 29 views
16

Doxygenを使用してC++でマクロ関数をドキュメント化し、私の非悪用コードのドキュメントを参照してください。Doxygenを使用したC++でのマクロ関数のドキュメント化

具体的には、Message.Hで定義された「Message」という名前の定期的なクラスがあります。このクラスはユーザーが継承してメッセージを定義することができます。別のファイル(「MessageHelpers.H」)で、私は狂った。このようなマクロがあります:フレーズ「REGISTER_MESSAGE_TYPE」は自動的にリンクしてポイントになることができれば、メッセージのドキュメントで

//! Users must call this macro to register their messages... 
/*! 
    ...lest they be forced to type all sorts of boring and 
    error-prone boiler plate code. 
    blah blah blah... More specific documentation and explanation... 
*/ 
#define REGISTER_MESSAGE_TYPE(MSGTYPE) \ 
do_some(MSGTYPE);      \ 
seriously();       \ 
crazy_stuff(MSGTYPE);      

を、私はそれを愛するだろう、私のマクロのドキュメント。例えば。

//! A cool message class 
/*! 
    Users can inherit from this class to create their own cool messages. 
    Just be sure to call REGISTER_MESSAGE_TYPE after your class definition! 
*/ 
class Message 
{ 
    virtual void doSomeStuff(); 
}; 

これは可能ですか?

答えて

12

http://www.stack.nl/~dimitri/doxygen/manual.html

section "Special Commands"リスト\def commandを参照してください、とsection "Automatic link generation"は、マクロにリンクしたいものについて説明します。

\defを使用して、ドキュメントとは別のマクロを文書化してください。 #MACRO(params)を使用して、前記マクロ定義に自動リンクします。

+0

これは私にとってはうまくいきません。私はここの例のhttp://www.stack.nl/~dimitri/doxygen/autolink.htmlからABSマクロをコピーしようとしましたが、ドキュメントは生成されていませんでした。私のコード "#ABS(x)"はリンクしていません。私は自分の設定ファイルで何か間違っている必要がありますか? – rcv

+1

これが問題なのかどうかわかりませんが、マクロが定義されているどこかでファイルを文書化してください。/*を試してみてください! \ file * /または/ ** @file * /を実行して、doxygenが警告を生成したかどうかを確認してください。ソースはhttp://www.stack.nl/~dimitri/doxygen/docblocks.html "グローバルオブジェクト"を検索しています。 (編集 - スラッシュスターの文字は動作しませんでしたが、複数行のコメントマーカーでなければなりません) – Guerrero

+0

うん、私は/ *! @file filename.h description ... * /すべてのファイルの先頭にあります。私のマクロ定義は、私のMessageHelpers.Hドキュメンテーションには表示されません。 – rcv

関連する問題