You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从被yield的函数中使用@copydoc复制文档?

问题翻译

我有一个包含大量Doxygen文档的函数testFixture,该函数在包含yield语句的测试函数testA中被调用。使用@copydoc testFixture或其完全限定版本均无法生效,但将其应用于其他未使用yield的函数时却能正常复制文档。查看生成的XML发现,Doxygen会为testFixture同时创建函数条目和变量条目(变量条目来自yield语句),且@copydoc总是解析为空的变量条目,而非带有文档的函数条目。请问是否有解决方案?

可行解决方案
  • 强制指定复制目标类型:因为Doxygen同时生成了函数和变量两种条目,@copydoc可能误匹配到变量条目。直接用@copydoc function::testFixture,通过function::类型限定符强制让Doxygen优先匹配函数类型的文档条目。

  • 给函数添加唯一ID:在testFixture的文档注释里加上@id testFixture_function,之后在需要复制文档的地方用@copydoc testFixture_function,通过唯一ID精准定位到函数的文档,避开yield生成的变量条目。

  • 屏蔽yield语句的Doxygen解析:如果测试框架允许,把yield调用改成带括号的形式yield(testFixture());或者在yield语句前后添加Doxygen忽略注释:

    //! @cond
    yield testFixture;
    //! @endcond
    

    让Doxygen跳过这条语句的解析,不再生成多余的变量条目。

  • 通过宏定义修正Doxygen解析逻辑:在Doxygen配置文件(Doxyfile)里修改PREDEFINED选项,添加宏定义让yield被当作普通函数调用处理:

    PREDEFINED += YIELD(x)=x
    

    之后把代码里的yield testFixture改成YIELD(testFixture),这样Doxygen就不会把它解析成变量声明,也就不会生成额外的变量条目了。

内容的提问来源于stack exchange,提问作者ILostMySpoon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.03 08:02:33