我注意到当构造函数接受参数时,Doxygen可以链接来自实例的成员函数调用,当默认构造函数不带参数但无法链接它们时。
@code
/ @endcode
块内手动添加链接?在下面的例子中:
t.foo()
- foo()
已关联u.foo()
- foo()
未链接
/** @file doxy.cpp */
/** struct T */
struct T {
/** foo */
void foo() { }
};
/** struct U */
struct U {
int a; /**< int a */
/** U */
U(int a_) : a(a_) { }
/** foo */
void foo() { }
};
/**
* main
*
* @code
* T t;
* t.foo(); // foo is linked
*
* U u(42);
* u.foo(); // foo is not linked
* @endcode
*/
int main()
{
return 0;
}
答案 0 :(得分:1)
我认为这是Doxygen中已知问题的症状。来自http://www.doxygen.nl/manual/trouble.html
在某些情况下,冗余牙套可能会混淆doxygen。例如:
void f (int);
被正确解析为函数声明,但
const int (a);
也被视为名为int的函数声明, 因为只分析语法,而不是语义。如果 可以检测到冗余括号,如
int *(a[20]);
然后doxygen将删除大括号并正确解析结果。
所以在这种情况下,我相信:
U u(42);
被解释为函数而不是变量声明。
不幸的是,我不知道在代码块中明确添加链接的任何选项。我发现的唯一解决方法是重构代码,以使声明看起来不像Doxygen的函数。例如,将变量初始化更改为:
U u = U(42);
允许Doxygen将u
识别为变量而不是函数。