【问题标题】:Expand non-function macros in doxygen documentation for C在 C 的 doxygen 文档中展开非函数宏
【发布时间】:2012-02-15 19:06:00
【问题描述】:

我正在尝试使用 doxygen 记录我的 C 代码。我使用#define 将一些默认值设置为宏。 (我知道 C 没有默认值,但这只是一个例子)

例如:

#define DEFAULT_WIDTH  100
#define DEFAULT_HEIGHT 200

在 doxygen 中,我添加了一个别名,可以按照我想要的方式处理默认值。考虑下面的示例函数

//! Initializes something
//! @param width The width @default DEFAULT_WIDTH
//! @param height The height @default DEFAULT_HEIGHT
//! @return Result of initialization
char initSomething(int width,int height);

这将生成我想要的文档,除了一个重要的事实。 DEFAULT_WIDTH 和 DEFAULT_HEIGHT 没有得到扩展,我得到的宏名分别不是 100 和 200。我确实检查了 MACRO_EXPANSION 和 ENABLE_PREPROCESSING。

我错过了什么?实际上有什么方法可以使用 doxygen 实现这一点吗?

我正在使用 doxywizard 配置 doxygen,目前正在 Windows 下进行测试。

编辑:正如 ugoren 指出的那样,可以只记录宏,然后 doxygen 会将文档链接到它们。这实际上是我当前的实现在我的项目中的方式。但我正在尝试考虑其他选项 - 如果有的话。

【问题讨论】:

    标签: c doxygen


    【解决方案1】:

    我认为没有什么比 MACRO_EXPANSION 和 ENABLE_PREPROCESSING 更强大的了。
    问题可能是 cmets 中的宏通常不会扩展。这是有充分理由的 - 想象一下宏 max 在文档中展开。

    您可以记录宏,因此文档的读者可以轻松找到真正的价值。

    【讨论】:

    • 是的,仅记录宏是一种可能的解决方案,这就是我目前正在做的事情,但我想知道是否有其他方法可以做到这一点。感谢您的输入
    • 确定宏可以在 doxygen 文档中展开
    【解决方案2】:

    添加类似的东西

    EXPAND_AS_DEFINED += DEFAULT_WIDTH
    

    到你的 doxygen 配置文件。

    (P99 的文档中充满了这样的宏扩展。它的 doxygen 配置文件应该随发行版一起提供。)

    【讨论】:

    • 您好 Jens,感谢您的意见。在提出问题之前我已经尝试过 EXPAND_AS_DEFINED 但它没有用。如果你说它对 P99 有效,那么我一定有错,或者它可能是 doxywizard 的一些特性。我以前检查过 P99,因为我什至在你的博客中评论过它,我会去比较 doxywizard 生成的配置文件和你的配置文件。
    • 恐怕还是不行。但是我注意到您的配置文件中的一件事与我的不同。为什么在主 conf 文件中只有一个 EXPAND_AS_DEFINED += FOOTNOTE 而所有其他似乎都在主 doxygen conf 文件包含的不同文件中?我只是在我的 conf 文件中添加了一堆 EXPAND_AS_DEFINED += MACRO 并且没有任何反应。那有什么不同吗?与预处理器有关的所有其他标志都设置为与 P99 相同
    • 不,我不认为是否将它们包含在包含文件中应该有所作为。在 P99 中,这只是为了更好地模块化。包含的文件基本上有一个EXPAND_AS_DEFINED 的大列表,因此该文件也可以包含在其他项目中。一定有什么可疑的事情发生了,稍后在配置文件中覆盖了一个 doxygen 变量,doxygen 在你的代码中拯救了某处......
    猜你喜欢
    • 2016-03-07
    • 1970-01-01
    • 2011-05-31
    • 2023-03-10
    • 2021-09-14
    • 1970-01-01
    • 2014-02-24
    • 2014-02-11
    • 2018-06-07
    相关资源
    最近更新 更多