青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Prayer

在一般中尋求卓越
posts - 1256, comments - 190, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

使用Doxygen為C\C++代碼寫文檔

Posted on 2009-12-24 16:36 Prayer 閱讀(750) 評論(0)  編輯 收藏 引用 所屬分類: 面向對象
Doxygen是這樣的一個工具,在我們寫代碼的同時,加上特定的注釋,然后,Doxygen就利用這些注釋生成漂亮的程序文檔。


Doxygen是GPL眾多優秀軟件中的一員,當然,不僅僅在Linux平臺有Doxygen,Doxygen還有Windows版本,而且他還提供了一個圖形界面Doxywizard,使得使用Docxygen 更加方便。

按照Doxywizard的步驟,
首先,我們要生成配置文件,可以采用簡單的方式,比如點擊wizard按鈕,配置好工程名(Project Name),工程的版本號,源文件的位置,以及代碼文檔的配置,其他默認,就可以簡單地配置好一個C++環境的Docxyfile,而以這個為模板就可以生成相應的文檔了;又或者點擊Expert,可以更詳細地配置Doxyfile,(注意,在expert選項里面可以選擇中文生成中文文檔)。
第二步,保存Doxyfile;第三步,選擇工作目錄;剩下的就是點擊start生成文檔了;
生成的文檔可以有html,或latex以及其他例如RTF,xml。不過中文latex的話就要加相應的宏包。


說完Docxygen的使用方法,馬上就要說說Doxygen的注釋的寫法,畢竟注釋才是Doxygen生成文檔的依據。

注釋塊可以是以下形式
 1/**
 2 *  文本 
 3 */

 4
 5/*!
 6 *  文本 
 7 */

 8
 9/*!
10   文本 
11*/


可以在注釋塊中加入下列元素來提示Docxygen來生成文檔,
 1\struct  產生一個C語言的struct
 2\class   產生一個類的文檔
 3\union   產生一個聯合體的文檔  
 4\enum    產生一個枚舉類型的文檔
 5\fn       函數
 6\var      變量
 7\def      #define 宏
 8\typedef  類型定義
 9\file    文件
10\namespace 命名空間
11\parm    函數的變量的注釋
12\return  函數的返回值的注釋
13\sa      參看
14\see     參考



不過以上的元素只是在注釋塊為
1/*!
2 *  文本 
3 */


1/*!
2   文本 
3*/

時才有效,而使用“@元素名”在
1/**
2 *  文本 
3 */

中是有效的。

還有可以利用"f[和"f]以及他們中間的LaTeX代碼生成一個行間居中對齊的數學公式,或利用"f$和"f$以及LaTeX代碼來生成數學公式。

下面來一個例子,(Doxygen幫助里的一個例子)
 1/*! "file structcmd.h
 2    "brief A Documented file.
 3    
 4    Details.
 5*/

 6
 7/*! "def MAX(a,b)
 8    "brief A macro that returns the maximum of "a a and "a b.
 9   
10    Details.
11*/

12
13/*! "var typedef unsigned int UINT32
14    "brief A type definition for a .
15    
16    Details.
17*/

18
19/*! "var int errno
20    "brief Contains the last error code.
21
22    "warning Not thread safe!
23*/

24
25/*! "fn int open(const char *pathname,int flags)
26    "brief Opens a file descriptor.
27
28    "param pathname The name of the descriptor.
29    "param flags Opening flags.
30*/

31
32/*! "fn int close(int fd)
33    "brief Closes the file descriptor "a fd.
34    "param fd The descriptor to close.
35*/

36
37/*! "fn size_t write(int fd,const char *buf, size_t count)
38    "brief Writes "a count bytes from "a buf to the filedescriptor "a fd.
39    "param fd The descriptor to write to.
40    "param buf The data buffer to write.
41    "param count The number of bytes to write.
42*/

43
44/*! "fn int read(int fd,char *buf,size_t count)
45    "brief Read bytes from a file descriptor.
46    "param fd The descriptor to read from.
47    "param buf The buffer to read into.
48    "param count The number of bytes to read.
49*/

50
51#define MAX(a,b) (((a)>(b))?(a):(b))
52typedef unsigned int UINT32;
53int errno;
54int open(const char *,int);
55int close(int);
56size_t write(int,const char *, size_t);
57int read(int,char *,size_t);



以及一個對類的注釋(注意里面對成員變量的注釋)
 1/**
 2 *  A test class. A more elaborate class description.
 3 */

 4
 5class Test
 6{
 7  public:
 8
 9    /**
10     * An enum.
11     * More detailed enum description.
12     */

13
14    enum TEnum {
15          TVal1, /**< enum value TVal1. */  
16          TVal2, /**< enum value TVal2. */  
17          TVal3  /**< enum value TVal3. */  
18         }

19       *enumPtr, /**< enum pointer. Details. */
20       enumVar;  /**< enum variable. Details. */
21       
22      /**
23       * A constructor.
24       * A more elaborate description of the constructor.
25       */

26      Test();
27
28      /**
29       * A destructor.
30       * A more elaborate description of the destructor.
31       */

32     ~Test();
33    
34      /**
35       * a normal member taking two arguments and returning an integer value.
36       * @param a an integer argument.
37       * @param s a constant character pointer.
38       * @see Test()
39       * @see ~Test()
40       * @see testMeToo()
41       * @see publicVar()
42       * @return The test results
43       */

44       int testMe(int a,const char *s);
45       
46      /**
47       * A pure virtual member.
48       * @see testMe()
49       * @param c1 the first argument.
50       * @param c2 the second argument.
51       */

52       virtual void testMeToo(char c1,char c2) = 0;
53   
54      /**
55       * a public variable.
56       * Details.
57       */

58       int publicVar;
59       
60      /**
61       * a function variable.
62       * Details.
63       */

64       int (*handler)(int a,int b);
65}
;


生成的文檔如例一/Files/lyq105/refman1.pdf

                 以及 /Files/lyq105/refman2.pdf

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产综合网站| 欧美性大战久久久久| 老**午夜毛片一区二区三区| 欧美日韩国产成人高清视频| 1000部精品久久久久久久久| 久久久青草青青国产亚洲免观| 小嫩嫩精品导航| 国产美女高潮久久白浆| 性做久久久久久久久| 亚洲一区二区三区777| 国产一区二区久久| 欧美第十八页| 国产精品视频免费观看| 久久精品免费看| 免费观看成人网| 欧美亚洲视频一区二区| 久久亚洲精选| 午夜精品偷拍| 免费在线看一区| 久久精品成人| 欧美国产亚洲视频| 久久手机免费观看| 欧美色偷偷大香| 欧美国产日本在线| 亚洲视频一起| 国产视频久久| 欧美日韩在线不卡| 欧美在线不卡| 亚洲最新色图| 亚洲国产成人porn| 国产人成一区二区三区影院| 亚洲国产精品成人综合色在线婷婷 | 久热精品在线视频| 老司机成人网| 国产欧美日韩在线播放| 亚洲欧美精品伊人久久| 久久久久久免费| 在线观看的日韩av| 欧美福利影院| 亚洲欧美另类久久久精品2019| 亚洲欧美日产图| 韩日成人在线| 欧美日本韩国在线| 久久久久久9| 欧美日韩一区成人| 久久久综合网站| 久久一二三区| 欧美日韩亚洲激情| 麻豆精品一区二区av白丝在线| 9久re热视频在线精品| 女同性一区二区三区人了人一| 午夜精品电影| 欧美亚洲视频| 欧美在线三区| 欧美在线视频导航| 欧美一区在线看| 欧美一区二区三区四区在线| 亚洲免费一在线| 久久精品视频播放| 一本久久青青| 久久综合伊人77777麻豆| 亚洲福利视频专区| 欧美一区二区免费| 欧美亚洲专区| 欧美人与性动交α欧美精品济南到| 久久免费偷拍视频| 国产精品中文字幕欧美| 一区二区三区四区国产精品| 亚洲人午夜精品| 欧美日韩www| 午夜精品视频在线观看| 久久综合图片| 一区二区免费在线视频| 国产一区日韩二区欧美三区| 欧美va天堂在线| 亚洲国产欧美一区二区三区同亚洲| 激情综合自拍| 亚洲高清免费视频| 亚洲欧美在线看| 久久天天躁狠狠躁夜夜爽蜜月| 午夜久久黄色| 欧美国产综合| 亚洲成人在线网站| 国语对白精品一区二区| 亚洲一区久久| 午夜视频久久久| 国产精品久久久久久久久久久久久久 | 久久精品盗摄| 欧美一区日本一区韩国一区| 欧美性猛交xxxx乱大交蜜桃| 亚洲国产另类久久久精品极度| 国产亚洲欧洲| 午夜精品久久久久99热蜜桃导演| 亚洲一区二区在线看| 欧美日韩国产二区| 亚洲日本中文字幕区| 最新亚洲一区| 欧美国产欧美亚州国产日韩mv天天看完整| 亚洲男同1069视频| 国产精品盗摄久久久| 亚洲另类自拍| 亚洲精品一区在线观看香蕉| 亚洲精品一二三区| 美女日韩欧美| 欧美成年人视频网站| 亚洲国产成人在线视频| 欧美a级片网站| 亚洲第一精品福利| 91久久精品日日躁夜夜躁国产| 免费成人av在线看| 亚洲黄色免费| 亚洲午夜久久久| 国产精品女主播| 欧美一级视频免费在线观看| 久久久久久欧美| 亚洲国产精品高清久久久| 欧美国产精品久久| 亚洲午夜精品一区二区| 久久精品中文字幕一区| 亚洲国产精品一区制服丝袜| 欧美成人一区二区三区在线观看| 99精品国产高清一区二区| 欧美在线免费| 亚洲精品一区二区三区蜜桃久| 国产精品福利网站| 久久久噜噜噜久久| 99国产精品国产精品久久| 久久久精品日韩欧美| 亚洲精选在线| 国产一区二区三区电影在线观看| 老司机精品久久| 亚洲一区二区三区在线视频| 欧美成人免费网| 亚洲欧美日韩专区| 1000部精品久久久久久久久| 欧美性开放视频| 欧美mv日韩mv国产网站| 亚洲欧美视频一区| 91久久在线| 久久综合婷婷| 欧美一区二区视频在线| 亚洲美女在线国产| 国内外成人在线| 欧美午夜在线视频| 免费看精品久久片| 欧美影视一区| 亚洲精选视频免费看| 久久综合久久综合久久| 香蕉国产精品偷在线观看不卡| 亚洲国产日韩美| 国产精品丝袜91| 欧美精品二区| 美女网站在线免费欧美精品| 香蕉久久夜色精品国产| 日韩一级黄色片| 亚洲高清激情| 女生裸体视频一区二区三区| 欧美一二三区在线观看| 一区二区三区av| 亚洲麻豆av| 在线观看视频一区| 国产自产女人91一区在线观看| 欧美性久久久| 欧美视频日韩视频| 欧美人与性动交cc0o| 欧美高清视频在线| 免费观看30秒视频久久| 久久精品国产精品亚洲综合 | 欧美日韩成人激情| 老巨人导航500精品| 欧美在线视频二区| 欧美一区二区三区视频在线观看| 亚洲综合色丁香婷婷六月图片| av72成人在线| 一本到12不卡视频在线dvd| 亚洲精品美女久久久久| 亚洲国产一区二区三区a毛片| 国模套图日韩精品一区二区| 国产欧美一区二区三区久久人妖| 国产精品亚发布| 国产精品一区二区三区四区| 国产精品亚洲欧美| 国产日韩一级二级三级| 国产精品主播| 国产一区二区| 在线播放日韩专区| 亚洲国产日韩在线| 亚洲毛片播放| 亚洲午夜精品久久久久久app| 在线亚洲一区二区| 午夜精品久久久久久99热软件| 午夜在线观看免费一区| 欧美在线视频导航| 美女露胸一区二区三区| 欧美成人dvd在线视频| 亚洲激情国产精品| 妖精视频成人观看www| av成人免费观看| 欧美一区二区三区免费观看视频 | 亚洲视频精选在线|