• <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
            久久er99热精品一区二区| 国内精品久久久久久久影视麻豆| 久久频这里精品99香蕉久| 久久99精品久久久大学生| 久久精品无码午夜福利理论片 | 久久发布国产伦子伦精品| 久久Av无码精品人妻系列| 国产精品99久久久久久www| 久久国产乱子伦精品免费午夜| 久久99精品久久久久久动态图| 久久亚洲高清观看| 欧美久久久久久| 91久久九九无码成人网站 | 色8久久人人97超碰香蕉987| 亚洲国产成人久久精品影视| 精品熟女少妇AV免费久久| 99久久国产综合精品成人影院| 久久99精品国产麻豆宅宅| 观看 国产综合久久久久鬼色 欧美 亚洲 一区二区 | 国产99久久九九精品无码| 久久国内免费视频| 91精品日韩人妻无码久久不卡| 日本人妻丰满熟妇久久久久久| 亚洲国产高清精品线久久| 久久亚洲高清观看| 99re这里只有精品热久久| 亚洲精品乱码久久久久久久久久久久 | 久久久SS麻豆欧美国产日韩| 久久精品一区二区影院| 99久久综合狠狠综合久久| 成人免费网站久久久| 国产91色综合久久免费分享| 久久亚洲AV成人无码国产| 欧美国产成人久久精品| 97精品伊人久久大香线蕉| 人妻中文久久久久| 久久无码精品一区二区三区| 久久国产精品偷99| 精品无码人妻久久久久久| 久久精品亚洲福利| 一本色综合久久|