5

我正在使用 Doxygen 来记录我的一些代码。我有一个使用默认参数的函数,该参数在标题中指定,即:

unsigned int CountColumns(const std::string&,const std::string& delim="");

以及源文件中的相应实现为:

unsigned int CountColumns(const string& input,const string& delim)
{
   ...
}

当我使用 Doxygen 生成文档时,CountColumns 有两个条目 - 一个包含默认值,一个不包含:

unsigned int    CountColumns (const string &input, const string &delim)
unsigned int    CountColumns (const std::string &, const std::string &delim="")

如何避免这种情况?我不希望多个函数定义弄乱我的文档。

编辑:正如我在下面的回答中也提到的那样,问题似乎是由于头文件在参数中使用“std::string”,而源文件包含“使用 std::string”声明,然后在参数中使用“字符串”。如果我在源文件中更改函数定义以使用“std::string”,Doxygen 会识别它与标题中声明的函数相同。

4

3 回答 3

5

我建议在您的配置文件中设置BUILTIN_STL_SUPPORTYES,以便 doxygen 知道 string 是在 std 命名空间中定义的类。

于 2012-08-29T19:42:49.627 回答
2

问题似乎是由于头文件在参数中使用“std::string”,而源文件包含“using std::string”语句,然后在参数中使用“string”。如果我在源文件中更改函数定义以使用“std::string”,Doxygen 会识别它与标题中声明的函数相同。

虽然不理想,但它是一种可行且不太笨拙的解决方案。

于 2012-08-28T20:25:00.557 回答
0

那么如何从文档中排除额外的功能呢?

这是来自 doxygen常见问题解答

“我怎样才能让 doxygen 忽略一些代码片段?

新的和最简单的方法是在应该被忽略的代码\cond段的开头添加一个带有命令的注释块和一个带有命令的注释块。\endcond这当然应该在同一个文件中。

但是你也可以为此使用 doxygen 的预处理器:如果你把

 #ifndef DOXYGEN_SHOULD_SKIP_THIS

  /* code that must be skipped by Doxygen */

 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
 around the blocks that should be hidden and put:

   PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS
 in the config file then all blocks should be skipped by Doxygen as long as 

预处理 = 是。"

于 2012-08-28T19:43:10.480 回答