• <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 大寶天天見 閱讀(824) 評論(0)  編輯 收藏 引用 所屬分類: 1.Book/Tools
            91麻豆精品国产91久久久久久| 蜜臀久久99精品久久久久久| 国产精品久久久久久久久软件| 久久强奷乱码老熟女网站| 日韩电影久久久被窝网| 久久亚洲国产成人精品性色| 久久九九亚洲精品| 精品伊人久久大线蕉色首页| 久久777国产线看观看精品| 久久久这里有精品| 国产L精品国产亚洲区久久| 久久亚洲春色中文字幕久久久| 国产精品视频久久| 99精品久久精品一区二区| 久久久久女教师免费一区| 色婷婷综合久久久中文字幕| 国产香蕉97碰碰久久人人| 亚洲va久久久噜噜噜久久男同| 久久久精品日本一区二区三区| avtt天堂网久久精品| 精品久久亚洲中文无码| 精品久久久久久无码人妻热| 99精品国产在热久久| 日韩人妻无码精品久久免费一 | 国产精品久久久久久影院| 中文字幕无码久久久| 欧美日韩精品久久久免费观看| 丁香五月综合久久激情| 国产精品视频久久| 久久这里只有精品久久| 97久久国产亚洲精品超碰热| 久久午夜伦鲁片免费无码| 狠狠综合久久综合88亚洲| 久久久一本精品99久久精品88| 欧美久久久久久| 久久亚洲AV成人无码| 精品久久久久成人码免费动漫 | 久久精品国产69国产精品亚洲| 久久久久久国产精品免费无码| 日韩av无码久久精品免费| 久久久久亚洲av无码专区|