程序文檔,曾經是程序員的一個頭痛問題。寫一個程序文檔,比較花時間,但不是很難;麻煩的是當程序修改後,程序文檔也要跟著同步更新,否則文檔和程序就要脫節,文檔也就變成沒用的東西了。
好在有許多好用的文檔生成器來解決這個問題。目前比較流行的C++文檔生成器是doxygen。
本文就簡單的介紹一下doxygen的文檔注釋方法,以供初學者參考:
C++ 程序文檔生成器介紹(doxygen) 沐楓網誌
結果為:
A list of events:
More text here.

/**//*
* @defgroup EXAMPLES 自動注釋文檔範例
* @author 沐楓
* @version 1.0
* @date 2004-2005
* @{
*/


/**//*
* @name 文件名常量
* @{
*/

/**//** 日誌文件名 */
#define LOG_FILENAME "d:\log\debug.log"
/**//** 數據文件名 */
#define DATA_FILENAME "d:\data\detail.dat"
/**//** 存檔文件名 */
#define BAK_FILENAME "d:\data\backup.dat"

/**//** @}*/ // 文件名常量

/**//*
* @name 係統狀態常量
* @{
*/

/**//** 正常狀態 */
#define SYS_NORMAL 0
/**//** 故障狀態 */
#define SYS_FAULT 1
/**//** 警告狀態 */
#define SYS_WARNNING 2

/**//** @}*/ // 係統狀態常量



/**//** 枚舉常量 */
typedef enum TDayOfWeek

{
SUN = 0, /**//**< 星期天 */
MON = 1, /**//**< 星期一 */
TUE = 2, /**//**< 星期二 */
WED = 3, /**//**< 星期三 */
THU = 4, /**//**< 星期四 */
FRI = 5, /**//**< 星期五 */
SAT = 6 /**//**< 星期六 */
}
/**//** 定義類型 TEnumDayOfWeek */
TEnumDayOfWeek; 
/**//** 定義類型 PEnumDayOfWeek */
typedef TEnumDayOfWeek* PEnumDayOfWeek; 

/**//** 定義枚舉變量 enum1 */
TEnumDayOfWeek enum1; 
/**//** 定義枚舉指針變量 enum2 */
PEnumDayOfWeek p_enum2; 



/**//*
* @defgroup FileUtils 文件操作函數
* @{
*/

/**//*
* 打開文件 n
* 文件打開成功後,必須使用 ::CloseFile 函數關閉。
* @param[in] file_name 文件名字符串
* @param[in] file_mode 文件打開模式字符串,可以由以下幾個模塊組合而成:
* - r 讀取
* - w 可寫
* - a 添加
* - t 文本模式(不能與 b 聯用)
* - b 二進製模式(不能與 t 聯用)
* @return 返回文件編號
* - -1 表示打開文件失敗
* @note 文件打開成功後,必須使用 ::CloseFile 函數關閉
* @par 示例:
* @code
// 用文本隻讀方式打開文件
int f = OpenFile("d:\test.txt", "rt");
* @endcode
* @see ::ReadFile ::WriteFile ::CloseFile
* @deprecated 由於特殊的原因,這個函數可能會在將來的版本中取消。
*/
int OpenFile(const char* file_name, const char* file_mode);

/**//*
* 讀取文件
* @param[in] file 文件編號,參見:::OpenFile
* @param[out] buffer 用於存放讀取的文件內容
* @param[in] len 需要讀取的文件長度
* @return 返回讀取文件的長度
* - -1 表示讀取文件失敗
* @pre e file 變量必須使用 ::OpenFile 返回值
* @pre e buffer 不能為 NULL
* @see ::OpenFile ::WriteFile ::CloseFile
*/
int ReadFile(int file, char* buffer, int len);

/**//*
* 寫入文件
* @param[in] file 文件編號,參見:::OpenFile
* @param[in] buffer 用於存放將要寫入的文件內容
* @param[in] len 需要寫入的文件長度
* @return 返回寫入的長度
* - -1 表示寫入文件失敗
* @pre e file 變量必須使用 ::OpenFile 返回值
* @see ::OpenFile ::ReadFile ::CloseFile
*/
int WriteFile(int file, const char* buffer, int len);

/**//*
* 關閉文件
* @param file 文件編號,參見:::OpenFile
* @retval 0 為成功
* @retval -1 表示失敗
* @see ::OpenFile ::WriteFile ::ReadFile
* @deprecated 由於特殊的原因,這個函數可能會在將來的版本中取消。
*/
int CloseFile(int file);

/**//** @}*/ // 文件操作函數

/**//** @}*/ // 自動注釋文檔範例