【问题标题】:Doxygen can't parse C function pointer signatureDoxygen 无法解析 C 函数指针签名
【发布时间】:2014-06-28 00:16:20
【问题描述】:

Doxygen (1.8.6) 不会解析这个,对我来说:

/**
  @fn dynArray* dynMap(dynArray* array, void*(*callback)(void**, size_t, dynArray*))
  @brief foo
  @param array    bar
  @param callback baz

  blah blah blah
*/
extern dynArray* dynMap(dynArray*, void*(*)(void**, size_t, dynArray*));

我做错了什么,还是这是一个错误?我注意到如果我从文档中删除参数名称,它会编译,尽管不正确(它会破坏参数)。但是,如果我将文档与签名完全匹配,它确实工作:

/**
  @fn dynArray* dynMap(dynArray* array, void*(*callback)(void**, size_t, dynArray*))
  @brief foo
  @param array    bar
  @param callback baz

  blah blah blah
*/
extern dynArray* dynMap(dynArray* array, void*(*callback)(void**, size_t, dynArray*));

但是,我在函数的类型定义中得到了arraycallback,这并不是特别令人满意...

【问题讨论】:

  • 如果你为函数指针类型定义了一个typedef,并在函数的声明中使用它会发生什么? (在这种情况下使用 typedef 还有其他好处,即可读性。)
  • 为了便于阅读,我将使用 typedef。感谢您的想法:)

标签: c function-pointers doxygen


【解决方案1】:

为什么你要使用@fn 而你要记录的符号就在评论块之后?这根本不需要。

如果您无法抑制使用@fn 的冲动,那么您确实应该将参数与声明相匹配(或者您可以将注释块移至函数定义)。

更多信息请参见http://www.doxygen.org/manual/docblocks.html#structuralcommands

使用函数指针时,通常最好对它们进行类型定义。

【讨论】:

  • 我是 Doxygen 的新手,鉴于它的大小,我发现“潜入”更容易;因此我使用@fn 却没有意识到我不需要。如果我删除 @fn 行,它可以工作,但它会破坏输出标题中的参数,因为它们没有在声明中定义......我将转到 typedef 的函数指针,原因是你和 @提到Lindydancer。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-03
相关资源
最近更新 更多