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

Prayer

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

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

Posted on 2009-12-24 16:36 Prayer 閱讀(761) 評論(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>
            亚洲国产另类久久久精品极度| 亚洲日本视频| 国产麻豆精品久久一二三| 欧美理论大片| 欧美福利网址| 欧美精品一区二区三区很污很色的 | 欧美在线日韩在线| 日韩一区二区精品| 夜夜躁日日躁狠狠久久88av| 亚洲老板91色精品久久| 一区二区不卡在线视频 午夜欧美不卡'| 亚洲黄色影片| 亚洲综合视频1区| 久久久久久久久久码影片| 免费高清在线一区| 欧美日韩爆操| 久久婷婷亚洲| 亚洲激情视频网站| 亚洲精品午夜| 篠田优中文在线播放第一区| 久久精品国产91精品亚洲| 欧美777四色影视在线| 最新中文字幕一区二区三区| 日韩一级精品视频在线观看| 午夜在线播放视频欧美| 亚洲欧美国产精品专区久久| 久久aⅴ乱码一区二区三区| 欧美ed2k| 国产精品久久久爽爽爽麻豆色哟哟| 国产精品视频免费在线观看| 在线免费观看日本一区| 中国亚洲黄色| 看片网站欧美日韩| 一本色道久久综合狠狠躁篇怎么玩 | 午夜精品视频在线| 亚洲大片av| 亚洲欧美日本在线| 欧美精品在线视频观看| 国产一区二区三区成人欧美日韩在线观看| 欧美成人精品在线视频| 国产日韩三区| 亚洲午夜性刺激影院| 免费视频最近日韩| 亚洲免费中文字幕| 欧美日韩妖精视频| 亚洲韩日在线| 狼狼综合久久久久综合网| 中文成人激情娱乐网| 免费视频一区| 欧美日韩爆操| 亚洲另类在线一区| 欧美h视频在线| 欧美一区二区大片| 国产精品色一区二区三区| 亚洲免费久久| 亚洲国产精品久久久久婷婷884| 欧美诱惑福利视频| 国产亚洲精品久久久久婷婷瑜伽 | 这里只有精品在线播放| 欧美电影在线免费观看网站| 亚洲欧美色一区| 国产精品日韩在线观看| 亚洲一区免费视频| 日韩视频在线观看一区二区| 欧美好骚综合网| 亚洲精品视频在线| 亚洲国产色一区| 欧美激情第1页| 亚洲少妇自拍| 一区二区高清视频| 欧美**字幕| 欧美一区二区三区久久精品茉莉花 | 久久久久se| 久久超碰97中文字幕| 国产伪娘ts一区| 久久精品国产v日韩v亚洲| 亚洲免费福利视频| 欧美日韩综合另类| 亚洲与欧洲av电影| 亚洲综合精品自拍| 国产网站欧美日韩免费精品在线观看 | 国产精品人成在线观看免费 | 亚洲色在线视频| 欧美日韩国产一中文字不卡 | 午夜精品福利电影| 亚洲欧美在线x视频| 欧美精品一区二区三区蜜桃 | 91久久极品少妇xxxxⅹ软件| 亚洲韩国青草视频| 欧美福利在线| 亚洲你懂的在线视频| 亚洲小说区图片区| 国产精品欧美风情| 亚洲日本成人| 欧美影院一区| 性色av一区二区三区| 伊人成人网在线看| 欧美激情欧美狂野欧美精品| 欧美体内she精视频在线观看| 亚洲一区二区三区色| 午夜免费在线观看精品视频| 国产日韩欧美视频| 亚洲伊人久久综合| 欧美一级午夜免费电影| 国产精品国产三级国产aⅴ入口 | 欧美在线视频全部完| 老司机成人网| 99在线|亚洲一区二区| 亚洲欧美一区二区原创| 亚洲高清在线观看一区| 一区二区三区偷拍| 亚洲视屏在线播放| 久久人人97超碰精品888| 亚洲高清123| 亚洲自拍都市欧美小说| 激情久久久久久久| 亚洲视频网在线直播| 激情欧美一区| 亚洲一区二区高清视频| …久久精品99久久香蕉国产| av成人动漫| 永久91嫩草亚洲精品人人| 亚洲一区图片| 日韩一级网站| 欧美激情精品久久久久久免费印度 | 欧美精品国产一区| 亚洲大胆在线| 国产日韩欧美视频在线| 亚洲一区二区在线免费观看| 1024精品一区二区三区| 久久久久久久网站| 性欧美8khd高清极品| 国产精品成人观看视频免费| 能在线观看的日韩av| 精品成人免费| 亚洲高清在线播放| 亚洲电影免费观看高清完整版在线观看 | 欧美色一级片| 亚洲精选91| 国产精品丝袜久久久久久app| aa级大片欧美三级| 狠狠色综合网| 欧美一级片在线播放| 亚洲精品乱码久久久久久| 久久久综合网站| 一区二区激情小说| 欧美高清视频在线播放| 欧美亚洲一区二区在线| 另类图片国产| 另类天堂av| 欧美午夜视频网站| 亚洲精品美女在线| 亚洲精品国产日韩| 欧美成人精品h版在线观看| 亚洲视频在线一区| 欧美好吊妞视频| 亚洲破处大片| 99re视频这里只有精品| 欧美成人三级在线| 欧美高清视频在线| 在线观看91精品国产麻豆| 欧美中文在线视频| 一区二区三区 在线观看视| 欧美国产国产综合| 亚洲日本一区二区| 宅男66日本亚洲欧美视频| 久久综合九色| 欧美成人蜜桃| 亚洲理论电影网| 欧美日韩成人免费| 夜夜嗨av一区二区三区网页 | 亚洲伦理在线观看| 亚洲日本一区二区| 欧美xx视频| 久久午夜视频| 亚洲电影成人| 欧美精品国产精品| 亚洲人成77777在线观看网| 一区二区激情| 国产精品裸体一区二区三区| 亚洲性av在线| 久久影视精品| 91久久视频| 欧美色大人视频| 午夜国产精品影院在线观看| 久久精品国产一区二区三| 国产精品日韩欧美综合| 久久久久九九视频| 亚洲精品影视| 久久成人精品视频| 国产人妖伪娘一区91| 午夜精品国产| 欧美国产欧美综合 | 美女脱光内衣内裤视频久久影院| 免费亚洲电影在线| 亚洲午夜av| 在线免费观看欧美| 欧美一区二区视频在线观看2020 | 一本一本久久| 亚洲欧美国产精品va在线观看|