【发布时间】:2012-06-01 16:48:19
【问题描述】:
我有一个头文件包含:
class ClassName {
...
////////////////////////////////////////////////////////////////////////////////////////////////////
/// \fn boost::function<int(void *, char *)> ClassName::getFnPtr();
///
/// \brief ...
///
/// \author ...
/// \date ...
///
/// \return A boost function object ...
////////////////////////////////////////////////////////////////////////////////////////////////////
boost::function<int(void *, char *)> getFnPtr();
...
};
运行 Doxygen 时,getFnPtr() 报告在“公共属性”而不是“公共成员函数”下。谁能帮我让 Doxygen 把它放在正确的地方?
我是 Doxygen 的新手,但熟悉 Javadoc。我正在使用 Doxygen GUI 1.8.1。
编辑:我认为 Doxygen 对涉及 boost 函数对象的模板化返回类型感到窒息。这篇文章 - Doxygen fails to parse templated return type - 表明 Doxygen 不处理最新的 C++ 更改。哪个版本的 C++ 开始支持 boost 函数对象返回类型?任何人都可以指出 Doxygen 用于提升函数对象返回类型的其他示例吗?
【问题讨论】:
-
可能是因为 Doxygen 没有 C++ 语言精确解析器(JavaDoc 有)。这意味着 Doxygen 在解释符号的含义和/或在何处定义符号时必须犯错误。 (它搞砸的地方取决于它没有实现的 C++ 的哪一部分)。尽管有这个缺陷,人们仍然使用 Doxygen,这一直让我感到困惑。
-
@IraBaxter 我发布的代码中是否存在某些固有的东西会触发 Doxygen 中的一个已知错误?或者你只是说“Doxygen 有错误所以不要使用它?”我还有其他非常相似的方法声明可以正常工作。无论如何我都必须使用 Doxygen,所以你能找出问题并帮助解决它吗?顺便说一句,您指出 Javadoc 具有 C++ 语言精确解析器。你的意思是 Javadoc 有一个语言精确的 Java 解析器?
-
我的意思是 JavaDoc 有(通过类比)一个语言精确的 Java 解析器,正确的。不,我不知道 Doxygen 类型解析器的局限性,除了真正的(我们为 C++ 前端构建一个)是巨大的努力,我没有理由相信已经为 Doxygen 做出了努力。我是说,“Doxygen 肯定有 bug”,所以我想知道人们为什么要使用它。一个答案是他们不会编写复杂的 C++ 程序,因此 Doxygen 所做的就是“足够正确”。如果 Doxygen 在您遇到的复杂情况下失败了,那么它正是在最需要它的地方失败了。因此,我的困惑。
标签: c++ documentation doxygen