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

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>
            亚洲人精品午夜| 免费国产一区二区| 久久精品日韩| 久久精品成人一区二区三区蜜臀 | 亚洲视频1区2区| 一本色道久久综合狠狠躁篇怎么玩 | 99视频日韩| 亚洲图片自拍偷拍| 欧美一区二区三区在| 久久中文在线| 亚洲日本aⅴ片在线观看香蕉| 免费在线播放第一区高清av| 亚洲精品国产精品国自产在线| 99热精品在线观看| 欧美一级二区| 欧美高清在线| 国产精品一区二区视频| 国语自产精品视频在线看抢先版结局 | 欧美一区二区三区免费看 | 黑丝一区二区| 亚洲免费激情| 久久国产免费| 亚洲免费精品| 亚洲欧美不卡| 欧美电影免费| 亚洲免费影视| 欧美精品尤物在线| 加勒比av一区二区| 亚洲自拍偷拍一区| 亚洲国产成人在线| 欧美一区二区免费观在线| 欧美另类在线观看| 亚洲第一免费播放区| 欧美一区视频| 亚洲无线观看| 欧美偷拍另类| 一区二区三区精品久久久| 欧美成人免费一级人片100| 亚洲女爱视频在线| 国产精品久久久久久久电影| 亚洲裸体俱乐部裸体舞表演av| 久久久久久久一区| 亚洲一区二区三区在线看| 欧美日韩国产在线播放| 亚洲三级电影全部在线观看高清| 久久久久久穴| 欧美一级黄色录像| 国产日韩欧美日韩大片| 午夜久久久久| 亚洲在线免费| 国产欧美激情| 久久成年人视频| 新67194成人永久网站| 欧美性做爰猛烈叫床潮| 亚洲色无码播放| 中文亚洲欧美| 国产精品网曝门| 欧美在线视频免费| 欧美一区二区三区免费在线看| 国产精品综合不卡av| 久久国产精品久久国产精品| 欧美一级专区| 亚洲二区三区四区| 欧美高清视频一区| 美国三级日本三级久久99| 在线电影国产精品| 欧美大片在线看免费观看| 免费不卡中文字幕视频| 亚洲理伦电影| 中文在线不卡视频| 国产区欧美区日韩区| 久久久免费精品| 久久综合99re88久久爱| 亚洲经典三级| 在线一区免费观看| 国产精品视屏| 米奇777超碰欧美日韩亚洲| 男人插女人欧美| 一区二区三区高清视频在线观看 | 久久精品道一区二区三区| 亚洲欧美日韩国产综合在线 | 国产日韩欧美综合| 国产精品一级二级三级| 国产精品永久| 亚洲乱码一区二区| 亚洲免费在线播放| 亚洲欧美日韩直播| 99精品视频网| 亚洲电影在线看| 99精品视频网| 欧美成人精品在线观看| 国产亚洲欧美色| 亚洲午夜在线视频| 欧美午夜www高清视频| 亚洲理伦在线| 欧美在线网址| 久久久久久久精| 久久人人精品| 亚洲欧美怡红院| 欧美亚洲网站| 亚洲一区二区三| 欧美一区二区视频在线| 亚洲另类黄色| 久久手机免费观看| 99天天综合性| 亚洲欧美综合| 亚洲精品欧洲| 久久精品午夜| 亚洲丰满少妇videoshd| 精品盗摄一区二区三区| 夜色激情一区二区| 亚洲午夜一二三区视频| 国产精品免费视频观看| 中国亚洲黄色| 亚洲色在线视频| 欧美激情一区二区在线 | 亚洲国产日韩欧美在线动漫 | 亚洲伊人网站| 国产精品综合av一区二区国产馆| 国产精品99久久久久久久vr| 亚洲激情在线播放| 久久大逼视频| 欧美精品日韩一区| 一本一本久久a久久精品牛牛影视| 亚洲免费视频网站| 在线观看欧美激情| 国产欧美一区二区精品性| 欧美一级久久| 美腿丝袜亚洲色图| 中文亚洲免费| 亚洲人体大胆视频| 国产一区视频在线看| 欧美成人精品福利| 欧美一区网站| 亚洲免费观看高清完整版在线观看熊| 99国产精品久久久久久久久久| 欧美日韩国产成人在线| 亚洲综合精品自拍| 一本色道88久久加勒比精品| 久热精品视频在线免费观看| 久久精品免费| 夜夜躁日日躁狠狠久久88av| 亚洲国产综合视频在线观看 | 在线播放中文字幕一区| 一本一本a久久| 欧美一区二区三区男人的天堂| 国产精品一区免费视频| 欧美精品一区二区三区四区| 亚洲你懂的在线视频| 亚洲伦理久久| 亚洲午夜久久久| 日韩午夜av电影| 久久免费黄色| 国产欧美精品一区二区三区介绍| 欧美成人精品在线| 国产精品嫩草99a| 国产精品亚洲欧美| 国产日韩欧美在线视频观看| 国产免费观看久久| 国产精品日韩在线播放| 国产伦精品一区二区三区照片91| 在线免费观看成人网| 亚洲视屏一区| 亚洲国产黄色| 亚洲网站在线看| 美女精品视频一区| 9久草视频在线视频精品| 在线亚洲自拍| 亚洲一区亚洲二区| 国产精品高潮呻吟久久av黑人| 国产精品久久9| 亚洲黄色av一区| 亚洲一级黄色av| 亚洲一二三四区| 欧美二区不卡| 亚洲黄色小视频| 欧美高清在线一区二区| 久久不见久久见免费视频1| 国产精品久久久久婷婷| 亚洲精品日本| 欧美成人午夜免费视在线看片| 性欧美大战久久久久久久久| 国产又爽又黄的激情精品视频| 亚洲一区免费网站| 亚洲美女精品久久| 亚洲精品在线视频观看| 两个人的视频www国产精品| 性色一区二区| 国产精品二区在线观看| 野花国产精品入口| 亚洲免费中文字幕| 国产人妖伪娘一区91| 亚洲视频网在线直播| 久久大逼视频| 欧美大片网址| 欧美一级片久久久久久久| 亚洲精选一区二区| 国产精品久久久一本精品| 久久免费视频观看| 久久久精彩视频|