自动链接生成

大多数文档系统都有特殊的“另请参见”部分,可以在其中插入指向其他文档的链接。尽管 Doxygen 也有一个命令来启动这样的部分(请参阅 \sa 部分),但它允许您将这些类型的链接放置在文档中的任何位置。对于 {\LaTeX} 文档,将写入页码的引用而不是链接。此外,文档末尾的索引可用于快速查找成员、类、命名空间或文件的文档。对于手册页,不生成引用信息。

接下来的部分将展示如何生成指向源文件中各种已记录实体的链接。

指向网页和邮件地址的链接

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) 和 Autolink_Test#member(int,int)
指向 Autolink_Test 受保护成员变量的链接: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) 和 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 文档。

转到 下一 部分或返回 索引