日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Doxygen的使用,配置及实例

發(fā)布時(shí)間:2025/4/5 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Doxygen的使用,配置及实例 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Doxygen是一種開(kāi)源跨平臺(tái)的,以類似JavaDoc風(fēng)格描述的文檔系統(tǒng),可以從一套歸檔源文件開(kāi)始,生成文檔

下載Doxygen + Graphviz

Doxygen可以生成動(dòng)態(tài)文檔

Graphviz可以生成視圖連接將.c文件中所用到的函數(shù)、頭文件生成一個(gè)樹(shù)狀結(jié)構(gòu)并且設(shè)置之后可以生成相對(duì)應(yīng)的函數(shù)的跳轉(zhuǎn),方便查詢函數(shù)。 ?

一、Doxygen的使用步驟

1.1Doxygen配置方法

1.1.1>Doxygen的主頁(yè)面

首先修改Project name,選擇掃描源代碼的目錄,Source code directory:勾選Scan recursively:

?

?

1.2>在Wizard的Topics下的Mode,選擇All Entities,可以輸出相對(duì)完整的功能,是否包含源代碼看自身情況,在下面選擇好自己的語(yǔ)言。這里得是C所以選擇C or PHP

?

?

?

1.3>在Output中,如果你需要輸出chm格式,勾選chm,沒(méi)有要求的話html就可以了

?

1.4>在Diagrams中選擇使用GraphViz包,來(lái)輸出UML,GraphViz包可以幫助建立一些樹(shù)狀視圖。

?

1.5>Expert中,你需要首選確定你所輸出的語(yǔ)言,個(gè)人使用中文在Expert的Input中,很重要的是INPUT_ENCODING項(xiàng),如果使用的為微軟默認(rèn)字符集請(qǐng)?zhí)顚慓BK,不然目錄亂碼,當(dāng)前選擇UTF-8,輸出語(yǔ)言選擇的是Chinese.

1.6>Build頁(yè)面,這個(gè)頁(yè)面是生成幫助信息中比較關(guān)鍵的配置頁(yè)面:

EXTRACT_ALL?表示:輸出所有的函數(shù),但是private和static函數(shù)不屬于其管制。

EXTRACT_PRIVATE?表示:輸出private函數(shù)。

EXTRACT_STATIC?表示:輸出static函數(shù)。同時(shí)還有幾個(gè)EXTRACT,相應(yīng)查看文檔即可。

HIDE_UNDOC_MEMBERS?表示:那些沒(méi)有使用doxygen格式描述的文檔(函數(shù)或類等)就不顯示了。當(dāng)然,如果EXTRACT_ALL被啟用,那么這個(gè)標(biāo)志其實(shí)是被忽略的。

INTERNAL_DOCS?主要指:是否輸出注解中的@internal部分。如果沒(méi)有被啟動(dòng),那么注解中所有的@internal部分都將在目標(biāo)幫助中不可見(jiàn)。

CASE_SENSE_NAMES?表示:是否關(guān)注大小寫名稱,注意,如果開(kāi)啟了,那么所有的名稱都將被小寫。對(duì)于C/C++這種字母相關(guān)的語(yǔ)言來(lái)說(shuō),建議永遠(yuǎn)不要開(kāi)啟。

HIDE_SCOPE_NAMES?表示:域隱藏,建議永遠(yuǎn)不要開(kāi)啟。

SHOW_INCLUDE_FILES?表示:是否顯示包含文件,如果開(kāi)啟,幫助中會(huì)專門生成一個(gè)頁(yè)面,里面包含所有包含文件的列表。

INLINE_INFO?:如果開(kāi)啟,那么在幫助文檔中,inline函數(shù)前面會(huì)有一個(gè)inline修飾詞來(lái)標(biāo)明。

SORT_MEMBER_DOCS?:如果開(kāi)啟,那么在幫助文檔列表顯示的時(shí)候,函數(shù)名稱會(huì)排序,否則按照解釋的順序顯示。

GENERATE_TODOLIST?:是否生成TODOLIST頁(yè)面,如果開(kāi)啟,那么包含在@todo注解中的內(nèi)容將會(huì)單獨(dú)生成并顯示在一個(gè)頁(yè)面中,其他的GENERATE選項(xiàng)同。

SHOW_USED_FILES?:是否在函數(shù)或類等的幫助中,最下面顯示函數(shù)或類的來(lái)源文件。

SHOW_FILES?:是否顯示文件列表頁(yè)面,如果開(kāi)啟,那么幫助中會(huì)存在一個(gè)一個(gè)文件列表索引頁(yè)面。

?

1.7>Expert>Input頁(yè)按照下圖進(jìn)行設(shè)置調(diào)整參數(shù)。

?

1.8>

1.如果在?Wizard?的?Output?Topics?中選擇了?prepare?for?compressed?HTML?(.chm)選項(xiàng),此處就會(huì)要求選擇?hhc.exe?程序的位置。在?windows?help?workshop?安裝目錄下可以找到?hhc.exe。

2.為了解決Doxygen生成的CHM文件的左邊樹(shù)目錄的中文變成了亂碼,CHM_INDEX_ENCODING中輸入GB2312即可。

3.GENERATE_CHI?表示索引文件是否單獨(dú)輸出,建議關(guān)閉。否則每次生成兩個(gè)文件,比較麻煩。

4.TOC_EXPAND?表示是否在索引中列舉成員名稱以及分組(譬如函數(shù),枚舉)名稱。

?

?

1.8>運(yùn)行doxygen

?

1.9>運(yùn)行結(jié)束

?

?

二.注釋規(guī)范

2.1> Doxygen注釋種類

Doxygen注釋的種類有多種

1.

/*** ....描述...*/

?

2.

/*!* ....描述...*/或者/*!....描述...*/

注:注釋塊中的星號(hào)(*)是可選的,可寫可不寫。

3

//////....描述...///或者//!//!....描述...//!

4

///....描述...//

2.2>Doxygen支持的指令

可以在注釋中加一些Doxygen支持的指令,主要作用是控制輸出文檔的排版格式,使用這些指令時(shí)需要在前面加上“\”或者“@”(JavaDoc風(fēng)格)符號(hào),告訴Doxygen這些是一些特殊的指令,通過(guò)加入這些指令以及配備相應(yīng)的文字,可以生成更加豐富的文檔,下面對(duì)比較常用的指令做一下簡(jiǎn)單介紹。

@file

檔案的批注說(shuō)明。

@author

作者的信息

@brief

用于class或function的簡(jiǎn)易說(shuō)明

eg:@brief本函數(shù)負(fù)責(zé)打印錯(cuò)誤信息串

@param

主要用于函數(shù)說(shuō)明中,后面接參數(shù)的名字,然后再接關(guān)于該參數(shù)的說(shuō)明

@return

描述該函數(shù)的返回值情況

eg: @return?本函數(shù)返回執(zhí)行結(jié)果,若成功則返回TRUE,否則返回FLASE

@retval

描述返回值類型

eg:@retval NULL?空字符串。
@retval !NULL?非空字符串。

@note

注解

@attention

注意

@warning

警告信息

@enum

引用了某個(gè)枚舉,Doxygen會(huì)在該枚舉處產(chǎn)生一個(gè)鏈接

eg:@enum CTest::MyEnum

@var

引用了某個(gè)變量,Doxygen會(huì)在該枚舉處產(chǎn)生一個(gè)鏈接

eg:@var CTest::m_FileKey

@class

引用某個(gè)類,

格式:@class <name> [<header-file>] [<header-name>]

eg: @class CTest "inc/class.h"

@exception

可能產(chǎn)生的異常描述

eg:@exception?本函數(shù)執(zhí)行可能會(huì)產(chǎn)生超出范圍的異常

?

2.3>文件注釋

放于文件的開(kāi)頭,例如:

/*** @file filename* @brief This is a brief description.* @details This is the detail description.* @author author* @date date* @version A001* @par Copyright (c):* XXX公司* @par History: * version: author, date, desc\n*/

2.3>函數(shù)注釋

放于函數(shù)聲明前,例如:

/** 下面是一個(gè)含有兩個(gè)參數(shù)的函數(shù)的注釋說(shuō)明(簡(jiǎn)述) * * 這里寫該函數(shù)的詳述信息 * @param a 被測(cè)試的變量(param描述參數(shù)) * @param s 指向描述測(cè)試信息的字符串 * @return 測(cè)試結(jié)果 (return描述返回值) * @see Test() (本函數(shù)參考其它的相關(guān)的函數(shù),這里作一個(gè)鏈接) * @note (note描述需要注意的問(wèn)題) */ int testMe(int a,const char *s);

2.4>數(shù)據(jù)結(jié)構(gòu)注釋

應(yīng)放于函數(shù)聲明前,例如:

/*** The brief description.* The detail description.*/typedef struct{int var1;///<Description of the member variable}XXXX;或者typedef struct box {成員變量注釋(enum的各個(gè)值也如此注釋):double length; ///< The length of the boxdouble width; ///< The width of the boxdouble height; ///< The height of the box};

2.5>宏定義注釋

放于宏定義上方或者右側(cè),例如:

/** Description of the macro */#define XXXX_XXX_XX ox7fffffff或者#define XXXX_XXX_XX 0 ///< Description of the macro.

2.6>全局和靜態(tài)變量注釋

例如:

1

2

3

/**? Description of global variable? */

int?g_xxx = 0;

static?int?s_xxx = 0;?///<? Description of static variable

使用文檔詳見(jiàn): ?Doxygen使用

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的Doxygen的使用,配置及实例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。