1

我有一些用 Doxygen 记录的类。此外,它们还使用 Microsoft 的源代码注释语言 (SAL) 进行注释,以支持静态代码分析。

//! The majestic class.
class Foo {
    //! \brief do something
    //! \param [out] pResult The result value is stored here.
    //! \returns The return value Succcess indicates success.
    _Success_(return == Success)
    virtual Result_t DoSomething(_Out_ uint32_t *pResult) = 0;
};

在这种情况下,Doxygen 会报告一个警告:

在 Foo::_Success_(return==Success)=0 的参数列表中找不到命令 @param 的参数“pResult”

所以,Doxygen 被注解语句弄糊涂了_Success_()。如何在 _Success_(return == Success) 不给源文件添加混乱的情况下隐藏 Doxygen 的返回值注释?这可以完成工作,但看起来太冗长:

//! The majestic class.
class Foo {
    //! \brief do something
    //! \param [out] pResult The result value is stored here.
    //! \returns The return value Succcess indicates success.
    //! \cond INTERNAL
    _Success_(return == Success)
    //! \endcond
    virtual Result_t DoSomething(_Out_ uint32_t *pResult) = 0;
};

这可以通过配置 Doxygen 并保持源代码不变来实现吗?

4

1 回答 1

2

在本章的 doxygen 手册中Preprocessing有一部分:

在处理 Microsoft 的语言扩展时,需要预处理器提供帮助的一个典型示例是:__declspec. GNU 的__attribute__扩展也是如此。这是一个示例函数。

在您的情况下,以下可能会起作用:

ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = YES
PREDEFINED = _Success_(x)=
于 2018-08-08T08:32:24.593 回答