【问题标题】:Doxygen does not properly determine return typeDoxygen 无法正确确定返回类型
【发布时间】:2016-02-16 19:43:39
【问题描述】:

我有这个代码:

#if PY_MAJOR_VERSION >= 3
int
#else
void
#endif
init_numpy()
{
    import_array();
}

这并不漂亮,但这不是我遇到的问题(这里讨论了此代码的原因https://mail.scipy.org/pipermail/numpy-discussion/2010-December/054357.html)。

我遇到的问题是,如果我在上面添加这样的 doxygen 评论:

/*! \brief some function
*
*/
#if PY_MAJOR_VERSION >= 3
...

Doxygen 假定此方法的返回类型为 void。一般来说,这当然不是真的。

问题

有没有一种方法可以获得正确的文档,即返回类型取决于所使用的 Python 版本。我不介意,如果上面的代码稍作改动(当然只要功能相同)。

【问题讨论】:

  • 您使用的是哪个版本的 doxygen。对于 1.8.11,我没有问题。另请参阅 Doxyfile 中有关预处理的标签
  • doxygen 向导说我使用的是 1.8.11。你说没有问题是什么意思?在您生成的文档中是否显示类似 (int/void) 的内容?
  • 在我的文档中,我看到 int 或 void 取决于 Doxyfile 的 PREDEFINED 项中 PY_MAJOR_VERSION 的设置。永远不会显示“int/void”的可能性,因为这与代码相矛盾,这只能在描述中实现。

标签: c++ doxygen preprocessor-directive


【解决方案1】:

您可以将返回类型硬编码到注释中。它将有标签 [return](我认为)并且只有它可能是的类型(int/void),然后在描述中包含原因。

【讨论】:

  • 我找不到您所描述的内容。这里 (stack.nl/~dimitri/doxygen/manual/commands.html#cmdreturn) 说你只能添加描述,不能添加类型。
  • 将@return 添加到 doxygen 注释中,然后描述返回的内容。然后 Doxygen 应将其包含在文档中。
  • 但这只是在详细部分添加描述。在所有方法的概述中,它仍然说 void 而不是 (int/void) 之类的东西。
  • 不幸的是,这可能和你得到的一样好。这是预处理器语句的一种极其罕见且通常不建议使用的用法,因此我不希望它能够接受它。如果您希望它显示 int 作为返回类型,您可以翻转该语句。如#if PY_MAJOR_VERSION
猜你喜欢
  • 1970-01-01
  • 2020-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-25
  • 2017-12-17
  • 1970-01-01
相关资源
最近更新 更多