• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            程序文檔,曾經是程序員的一個頭痛問題。寫一個程序文檔,比較花時間,但不是很難;麻煩的是當程序修改后,程序文檔也要跟著同步更新,否則文檔和程序就要脫節,文檔也就變成沒用的東西了。

            好在有許多好用的文檔生成器來解決這個問題。目前比較流行的C++文檔生成器是doxygen。
            本文就簡單的介紹一下doxygen的文檔注釋方法,以供初學者參考:

            C++ 程序文檔生成器介紹(doxygen)     沐楓網志

            1. 模塊定義(單獨顯示一頁)
            /*
             * @defgroup 模塊名 模塊的說明文字
             * @{
             */
             
             ... 定義的內容 ...
             
            /** @} */ // 模塊結尾
             
            2. 分組定義(在一頁內分組顯示)
            /*
             * @name 分組說明文字
             * @{
             */
             
             ... 定義的內容 ...
             
            /** @} */
             
            3. 變量、宏定義、類型定義簡要說明
            /** 簡要說明文字 */
            #define FLOAT float
             
            /** @brief 簡要說明文字(在前面加 @brief 是標準格式) */
            #define MIN_UINT 0
             
            /*
             * 分行的簡要說明 \n
             *  這是第二行的簡要說明
             */
            int b;
             
            4. 函數說明
            /*
             * 簡要的函數說明文字 
             *  @param [in] param1 參數1說明
             *  @param [out] param2 參數2說明
             *  @return 返回值說明
             */
            int func(int param1, int param2);
             
            /*
             * 打開文件 \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);
             
            5. 枚舉類型定義
            /** 枚舉常量 */
            typedef enum TDayOfWeek
            {
            SUN = 0, /**<  星期天(注意,要以 “<” 小于號開頭) */
            MON = 1, /**<  星期一 */
            TUE = 2, /**<  星期二 */
            WED = 3, /**<  星期三 */
            THU = 4, /**<  星期四 */
            FRI = 5, /**<  星期五 */
            SAT = 6  /**<  星期六 */
            }
            /** 定義類型 TEnumDayOfWeek */
            TEnumDayOfWeek;  
              
            6. 項目符號標記
              /* 
               *  A list of events:
               *    - mouse events
               *         -# mouse move event
               *         -# mouse click event\n
               *            More info about the click event.
               *         -# mouse double click event
               *    - keyboard events
               *         -# key down event
               *         -# key up event
               *
               *  More text here.
               */
             

            結果為:

            A list of events:

            • mouse events
              1. mouse move event
              2. mouse click event
                More info about the click event.
              3. mouse double click event
            • keyboard events
              1. key down event
              2. key up event

            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);

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

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


            生成的chm文檔截圖:



            范例下載:
            /Files/ly4cn/doxygen_example.rar
            posted on 2010-11-15 17:07 大寶天天見 閱讀(802) 評論(0)  編輯 收藏 引用 所屬分類: 1.Book/Tools
            国产精品久久成人影院| 思思久久99热免费精品6| 精品国产青草久久久久福利| 久久精品国产清自在天天线| 无码精品久久久久久人妻中字 | 色成年激情久久综合| 久久久精品国产亚洲成人满18免费网站| 久久久噜噜噜久久| 久久久久久精品免费看SSS| 99久久精品国内| 热RE99久久精品国产66热| 国产欧美久久一区二区| 欧美久久亚洲精品| 波多野结衣中文字幕久久| 亚洲精品视频久久久| 99久久国语露脸精品国产| 波多野结衣久久| 99久久成人18免费网站| 久久久久人妻一区二区三区vr| 国产成人精品久久综合| 99久久99久久久精品齐齐| 亚洲欧洲久久久精品| 精品欧美一区二区三区久久久| 午夜精品久久久久久99热| 武侠古典久久婷婷狼人伊人| 国产精品一久久香蕉产线看| 无码八A片人妻少妇久久| 久久免费99精品国产自在现线| 国产婷婷成人久久Av免费高清| 久久九九兔免费精品6| 亚洲欧美国产日韩综合久久| 久久九色综合九色99伊人| 91精品国产91久久久久久| 久久精品国产亚洲AV无码娇色 | av午夜福利一片免费看久久| 久久伊人精品一区二区三区| 亚洲AV伊人久久青青草原| 亚洲国产成人久久一区久久| 久久精品国产亚洲AV不卡| 久久精品二区| 久久婷婷色香五月综合激情|