自动链接生成

大多数文档系统都有特殊的“参见”部分,用于插入指向其他文档片段的链接。虽然 Doxygen 也有一个命令来启动这样一个部分(参见 \sa),但它允许你在文档中的任何地方放置这类链接。对于 {\LaTeX} 文档,会写入页码引用而非链接。此外,文档末尾的索引可用于快速查找成员、类、命名空间或文件的文档。对于 man 页面,不会生成引用信息。

下一节将展示如何为源文件中的各种文档实体生成链接。

网页和邮件地址链接

Doxygen 会自动将文档中找到的任何 URL 和邮件地址替换为链接 (在 HTML 中)。要手动指定链接文本,请使用 HTML 的 'a' 标签

<a href="linkURL">link text</a> 

Doxygen 会将其自动翻译成其他输出格式。

类链接

文档中所有对应于已文档化的类且包含至少一个非小写字符的词,都会被自动替换为指向该类文档页面的链接。如果你想阻止某个对应于已文档化的类的词被替换为链接,应在该词前面加上 %。要链接到全小写符号,请使用 \ref

文件链接

所有包含非最后一个字符的点的词 (.) 都被认为是文件名。如果该词确实是已文档化的输入文件的名称,将自动创建指向该文件文档的链接。

函数链接

当遇到以下模式之一时,会创建函数链接:

  1. <函数名>"("<参数列表>")"
  2. <函数名>"()"
  3. "::"<函数名>
  4. (<类名>"::")n<函数名>"("<参数列表>")"
  5. (<类名>"::")n<函数名>"("<参数列表>")"<修饰符>
  6. (<类名>"::")n<函数名>"()"
  7. (<类名>"::")n<函数名>

其中 n>0。

注 1
函数参数应使用正确的类型指定,例如 'fun(const std::string&,bool)' 或 '()' 以匹配任何原型。
注 2
需要成员函数修饰符(如 'const' 和 'volatile')来识别目标,例如 'func(int) const' 和 'func(int)' 目标不同的成员函数。
注 3
为了与 Javadoc 兼容,在上述模式中可以使用 # 代替 ::。
注 4
在包含成员 foo 的类的文档中,使用 "::foo" 引用全局变量,而 #foo 将链接到该成员。

对于非重载成员,参数列表可以省略。

如果函数被重载但未指定匹配的参数列表(即使用模式 2 或 6),则将创建指向其中一个重载成员文档的链接。

对于成员函数,如果满足以下条件,可以省略类作用域(如模式 4 到 7 中使用的):

  1. 该模式指向与包含该模式的文档块属于同一类的已文档化成员。
  2. 与包含该模式的文档块对应的类具有一个基类,该基类包含一个与该模式匹配的已文档化成员。

其他成员链接

所有这些实体都可以按照上一节中描述的方式进行链接。为了清晰起见,在这种情况下建议只使用模式 3 和 7。

示例
/*! \file autolink.cpp
测试自动链接生成。
指向 Autolink_Test 类成员的链接:Autolink_Test::member,
指向每个重载成员的更具体链接
Autolink_Test::member(int) and Autolink_Test#member(int,int)
指向 Autolink_Test 的 protected 成员变量的链接:Autolink_Test#var,
指向全局枚举类型 #GlobEnum 的链接。
指向宏定义 #ABS(x) 的链接。
指向 Autolink_Test 类析构函数的链接:Autolink_Test::~Autolink_Test,
指向 typedef ::B 的链接。
指向枚举类型 Autolink_Test::EType 的链接
指向一些枚举值 Autolink_Test::Val1 和 ::GVal2 的链接
*/
/*!
此文档块属于 Autolink_Test 类,也可以通过
使用 #Autolink_Test 进行链接。
链接到构造函数:#Autolink_Test() 和 Autolink_Test()。
链接到析构函数:#~Autolink_Test 和 ~Autolink_Test()。
链接到此类的成员:member()。
指向每个重载成员的更具体链接
member(int) and member(int,int)。
链接到变量 #var。
链接到全局 typedef ::B。
指向全局枚举类型 #GlobEnum 的链接。
链接到宏 ABS(x)。
指向变量 \link #var 使用其他文本\endlink 的链接。
指向枚举类型 #EType 的链接。
指向一些枚举值:\link Autolink_Test::Val1 Val1 \endlink 和 ::GVal1。
最后但并非最不重要的一点是,链接到文件:autolink.cpp。
\sa 在“参见”部分中,任何词都会被检查,因此 EType,
Val1, GVal1, ~Autolink_Test 和 member 将在 HTML 中被替换为链接。
*/
class Autolink_Test
{
public:
Autolink_Test(); //!< 构造函数
~Autolink_Test(); //!< 析构函数
void member(int); /**< 成员函数。详情。*/
void member(int,int); /**< 重载成员函数。详情 */
/** 枚举类型。更多详情 */
enum EType {
Val1, /**< 枚举值 1 */
Val2 /**< 枚举值 2 */
};
protected:
int var; /**< 成员变量 */
};
/*! 详情。*/
Autolink_Test::Autolink_Test() { }
/*! 详情。*/
Autolink_Test::~Autolink_Test() { }
/*! 全局变量。*/
int globVar;
/*! 全局枚举。*/
enum GlobEnum {
GVal1, /*!< 全局枚举值 1 */
GVal2 /*!< 全局枚举值 2 */
};
/*!
* 宏定义。
*/
#define ABS(x) (((x)>0)?(x):-(x))
typedef Autolink_Test B;
/*! \fn typedef Autolink_Test B
* 类型定义。
*/
点击 此处 查看 Doxygen 生成的相应 HTML 文档。

类型别名

涉及类、结构体和联合体的类型别名,例如

typedef struct StructName TypeName

为 StructName 创建一个别名,因此当遇到 StructName 本身或 TypeName 时,都会生成指向 StructName 的链接。

示例
/*! \file restypedef.cpp
* 解析类型别名的示例。
*/
/*! \struct CoordStruct
* 坐标对。
*/
struct CoordStruct
{
/*! x 坐标 */
float x;
/*! y 坐标 */
float y;
};
/*! 为 CoordStruct 创建一个类型名称 */
typedef CoordStruct Coord;
/*!
* 此函数返回 \a c1 和 \a c2 的和,即
(c1.x+c2.x,c1.y+c2.y)
*/
Coord add(Coord c1,Coord c2)
{
}
点击 此处 查看 Doxygen 生成的相应 HTML 文档。

前往 下一节 或返回 索引