gpt4 book ai didi

c# - 为包装 C++ 的 swig 生成的 C# 生成 doxygen 注释

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:33:25 24 4
gpt4 key购买 nike

我有一个用 C++ 编写的项目,我也在其中使用 swig 生成一些 C# 包装器。 C++ 代码使用 Doxygen 风格的注释来注释类和函数。是否可以让 Swig 获取这些 doxygen 注释并为 C# 包装器类和函数生成 doxygen 注释?

最佳答案

目前,SWIG 根本不解析代码注释,包括 Doxygen 文档。

几年来有一个 SWIG 分支正在开发中,以使 SWIG 能够处理 Doxygen 注释,但即使是目前 (AFAIK) 也只能将它们映射到 Java 和 Python 文档。

因此,目前最好的选择是从 C++ 源代码中提取 Doxygen 文档并将其插入到 SWIG 生成的包装器中。要了解如何做到这一点,这里简要解释了 doxy2swig.py 的作用(这确实适用于 python 文档字符串):

  1. 让 Doxygen 将文档提取为 XML 格式
  2. 解析 XML,并重新格式化为合适的 Python 文档字符串
  3. 编写 %feature("docstring") SWIG 指令,告诉 SWIG 将文档字符串附加到包装的类和方法。

基本上,对于 C# 也可以做类似的事情。我不知道如何为 C# 执行 (2),即如何将 Doxygen XML 输出转换为合适的 C# 文档,这可能需要您自己实现(也许通过修改 doxy2swig.py 脚本).

对于 (3) 有一个巧妙的技巧,有点记录在案 here ,请注意,使用 %csclassmodifiers%csmethodmodifiers 也可以为 C# 完成同样的操作。这些 SWIG 功能指令是 AFAIK,用于将 publicprotected 添加到 C# 方法或类中。但是它们可以被劫持以添加提取的文档(+ public 关键字,不要忘记)。因此,它们有效地允许与 Python 的 %feature("docstring") 指令相同的功能。

最后,我不懂 C#,但是在 C# 包装器中包含 Doxygen 注释有什么意义呢?如果您只想使用 Doxygen 生成文档,您可以直接从 C++ 源代码执行此操作,因此您不会获得任何 yield 。在 Python 中,文档字符串可以在运行时显示为帮助,并被一些 IDE 使用。 C#也有这个吗?

关于c# - 为包装 C++ 的 swig 生成的 C# 生成 doxygen 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37780325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com