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

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>
            午夜在线视频观看日韩17c| 国产精品视频yy9299一区| 亚洲激情欧美激情| 欧美在线|欧美| 久久激情五月婷婷| 久久婷婷激情| 欧美v日韩v国产v| 亚洲国产欧美一区二区三区同亚洲| 久久久99国产精品免费| 久久久亚洲欧洲日产国码αv| 欧美一区二区三区另类| 久久高清免费观看| 欧美丰满高潮xxxx喷水动漫| 亚洲人成高清| 亚洲专区免费| 久久综合激情| 亚洲精品久久久一区二区三区| 国产亚洲欧美另类中文| 欧美午夜寂寞影院| 国产免费一区二区三区香蕉精| 精品动漫一区| 日韩视频在线观看国产| 欧美伊人精品成人久久综合97| 久久久久久穴| 99国产精品久久久| 欧美在线3区| 欧美性生交xxxxx久久久| 激情久久久久久| 亚洲欧美日韩国产精品| 亚洲高清免费在线| 欧美在线日韩| 国产精品视频yy9299一区| 亚洲美女尤物影院| 久久精品视频在线看| 亚洲黄色免费电影| 欧美一区二区三区成人| 欧美日韩成人一区二区| 黄色成人免费观看| 欧美亚洲一区二区在线观看| 亚洲精品美女久久7777777| 久久九九免费视频| 国产日本精品| 午夜精品亚洲| 夜夜躁日日躁狠狠久久88av| 欧美插天视频在线播放| 激情久久久久| 另类激情亚洲| 久久国产黑丝| 国产视频综合在线| 香蕉久久一区二区不卡无毒影院 | 午夜亚洲一区| 亚洲三级视频在线观看| 六月婷婷久久| 亚洲国产精选| 欧美激情五月| 欧美顶级大胆免费视频| 91久久国产精品91久久性色| 免费欧美电影| 麻豆国产va免费精品高清在线| 国语自产精品视频在线看一大j8| 午夜久久99| 亚洲欧美在线一区二区| 国产欧美日韩专区发布| 性色av一区二区三区| 亚洲欧美电影院| 国产亚洲欧洲| 久久一二三四| 米奇777在线欧美播放| 在线成人亚洲| 欧美华人在线视频| 欧美激情精品久久久久久蜜臀 | 麻豆亚洲精品| 久久久97精品| 亚洲国产日韩一区| 91久久精品网| 国产精品国产三级国产aⅴ入口| 亚洲天堂成人| 亚洲欧美综合精品久久成人 | 欧美日韩国内自拍| 亚洲网址在线| 性高湖久久久久久久久| 在线观看的日韩av| 亚洲精选在线| 国产日韩欧美在线视频观看| 免费在线欧美黄色| 欧美日韩小视频| 久久精品免费| 欧美精品一区二区久久婷婷| 午夜精品久久久久久久99热浪潮| 久久精品导航| 亚洲系列中文字幕| 久久久久久久久久久久久9999| 亚洲国产婷婷香蕉久久久久久99| 日韩午夜在线播放| 国产一区二区三区丝袜| 亚洲国产欧洲综合997久久| 国产精品亚洲综合| 亚洲第一页中文字幕| 国产精品视频观看| 亚洲精华国产欧美| 国产在线一区二区三区四区| 亚洲破处大片| 国产综合色精品一区二区三区| 亚洲第一精品夜夜躁人人躁| 欧美性大战久久久久久久蜜臀| 久久综合网络一区二区| 欧美性久久久| 亚洲国产欧美精品| 影音先锋成人资源站| 亚洲免费视频在线观看| 亚洲日产国产精品| 久久久久国色av免费观看性色| 亚洲综合色网站| 欧美激情无毛| 亚洲第一二三四五区| 国内精品国语自产拍在线观看| 一本综合久久| 一区二区免费在线视频| 欧美阿v一级看视频| 浪潮色综合久久天堂| 国产区欧美区日韩区| 亚洲视频高清| 一区二区国产精品| 欧美精品国产精品日韩精品| 老牛嫩草一区二区三区日本| 国产亚洲免费的视频看| 亚洲最新视频在线播放| 中文精品视频| 欧美日韩少妇| 在线视频亚洲一区| 亚洲无线一线二线三线区别av| 亚洲精品少妇网址| 欧美性猛交一区二区三区精品| 亚洲国产欧美一区二区三区同亚洲 | 99在线|亚洲一区二区| 99国产精品久久久| 欧美精品自拍偷拍动漫精品| 亚洲国产精品一区二区第四页av| 亚洲第一精品在线| 久久综合九色综合欧美就去吻| 久久亚洲欧美| 亚洲国内自拍| 欧美绝品在线观看成人午夜影视| 亚洲国产精品一区二区第一页| 亚洲人精品午夜在线观看| 欧美超级免费视 在线| 亚洲精品黄色| 亚洲一区二区久久| 国产精品日韩欧美一区二区| 亚洲欧美日韩另类| 久久全国免费视频| 亚洲福利专区| 欧美日韩亚洲综合在线| 亚洲欧美日韩国产一区| 久久久久久久久综合| 在线观看日韩www视频免费| 浪潮色综合久久天堂| 亚洲激情影视| 欧美一区二区三区视频免费| 亚洲第一天堂无码专区| 欧美日韩美女一区二区| 性欧美1819性猛交| 亚洲国产91精品在线观看| 亚洲无亚洲人成网站77777| 国产欧美精品日韩区二区麻豆天美| 性欧美长视频| 最新国产の精品合集bt伙计| 午夜精品亚洲一区二区三区嫩草| 国产一区二区三区久久悠悠色av| 欧美成人日韩| 性做久久久久久久久| 亚洲激情第一页| 久久国产精品一区二区三区四区 | 亚洲资源在线观看| 久久一二三四| 亚洲一区三区电影在线观看| 海角社区69精品视频| 欧美区二区三区| 久久国产色av| 一区二区三区欧美日韩| 免费在线看成人av| 香蕉视频成人在线观看| 日韩午夜中文字幕| 在线免费日韩片| 国产婷婷色综合av蜜臀av | 国产亚洲精品美女| 欧美日韩中文字幕在线| 久久夜色精品国产噜噜av| 亚洲你懂的在线视频| 亚洲精品中文字幕女同| 免费观看在线综合色| 一本色道久久88综合亚洲精品ⅰ| 久久久精品免费视频| 国产精品免费一区二区三区在线观看 | 中文在线一区| 欧美成人免费一级人片100| 亚洲欧美日韩成人| 亚洲三级影院| 激情欧美丁香| 狠狠色狠色综合曰曰|