C++で、JavaDocと同じようなことができないのでしょうか?

つまり、


/**

コンストラクタ

@param str [in]何かの文字列

@return 何かを返します

@note 返却値は変更しないように何かと気をつけてね。

*/


というような関数ヘッダを書くと、JavaはHTMLにしてくれて、見やすいリファレンスのようなものを作ってくれます。

こんなことできないかなぁ?

できます!


doxygen というソフトを使えば!


ソースが大きくなってくると自分ですら何の関数だったか分からなくなります。

ましてや何人かで開発するときをや!


是非、このソフトを使ってみましょう。


<サンプル (こんなんできます)>

sample



sample




インストールは簡単です。

ダウンロードして、インストーラでどんどん「Next」ボタンを押していけば良いです。


では、実際使うときに良く使うタグを紹介しておきます。




<良く使うタグ>

●関数ヘッダ

/**

<関数の説明>

@param <引数名> <引数の説明>

@return <返り値の説明>

@note <注意点>

@exception <例外クラス名> <例外が発生するときの説明>

*/



●クラスヘッダ

/**
@class <クラス名>
@brief <概略説明>

@n <改行タグです。いろいろなところで使えます>
@author <クラス作成者名>
@version <バージョン>
@date <日付>


<pre>

HTMLのタグを使って、説明を書けば、それも出力されます。

ちなみにpreは、内容をそのまま出力するHTMLのタグです。

</pre>
*/



●enumやconst定数の値の説明
///<定数の説明>



<使用例>

/**
入力ストリームから文字列を読み取って、内部に文字列を設定する
@param is [in]入力ストリーム
@exception std::runtime_error isからの読み込み中に何かしらのエラーが発生した場合。
*/
void FixedSizeStringBase::input(istream& is)
{ ... }


/**
@class FixedSizeStringBase
@brief メモリアドレスと確保サイズが固定された文字列の基底クラス。
@author nana
@version 1.0
@date 2007.05.05 -
*/

class FixedSizeStringBase
{ ... }


///動物の種類

enum KIND{

///犬

DOG,

///猫

CAT

};



漏補

漏:

doxygenの「OUTPUT_LANGUAGE」設定で、「Japanese」を設定すれば

日本語に対応しますが、全角空白が文字化けします。


補:

全角空白を使わないようにしましょう。これは気をつけるしかないかと思います。

もしかしたら現在は、日本語パッチのようなものが出ているかもしれません。

探してパッチを当てるのも良いかもしれません。

でも自分の場合、今まで使用していて文字化けしたのは全角空白くらいでした。



参考:

doxygenとは?

doxygenでドキュメント作成するには?