c++ - 使用 Doxygen 记录发送到 MACRO C++ 的函数

标签 c++ macros doxygen

最近,我们使用 MACROS 添加了一些代码来在编译时标记已弃用的代码。现在,Doxygen 没有正确记录已弃用的函数。

    #if defined(__GNUC__)
    #define DEPRECATED(func) func __attribute__((deprecated)) /**< mark a function as deprecated in gcc. */ 

    #elif defined(_MSC_VER)
    #define DEPRECATED(func) __declspec(deprecated) func /**< mark a function as deprecated in msvc. */
    #endif

请注意,这是本文宏的简化版本,实际宏执行编译器版本检查等。

稍后在函数周围使用宏,让编译器知道该函数已被弃用,因此将发出编译器警告。

    /**
     * myMethod() is deprecated.
     */
    DEPRECATED(
        /**
         * @deprecated
         * Description of deprecated function
         * 
         * @param var this is a parameter
         *
         * @return this is returned 
         */
        int myMethod(int var)
    );

问题是 Doxygen 希望显示 DEPRECATED 的文档而不是 myMethod(int var) 的文档。

有谁知道如何让 Doxygen 记录 myMethod 而不是已弃用的宏?

最佳答案

您应该告诉 doxygen 它必须删除 DEPRECATED 宏。您可以使用配置文件中的以下预处理器选项来执行此操作:

ENABLE_PREPROCESSING   = YES
MACRO_EXPANSION        = YES
EXPAND_ONLY_PREDEF     = YES
PREDEFINED             = "DEPRECATED(x)=x"

您可以通过使用 -d Preprocessor 选项运行 doxygen 来调试预处理结果。当此选项存在时,Doxygen 将在执行预处理后将输入文件转储到输出。

有关更多信息,请参阅 http://www.doxygen.org/preprocessing.html

关于c++ - 使用 Doxygen 记录发送到 MACRO C++ 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8044457/

相关文章:

c# - 哪种数据类型最适合 C++ 中 Thrift 通信中的日期时间?

c++ - `#input`类型的宏字符串在C++中是如何分配的?

c - doxygen 中是否可以提取函数注释并以 markdown 形式显示?

pdf - doxygen Latex 由于输入编码错误而失败

c - 初始化结构体的字段

php - Doxygen 忽略@method

c++ - 在 C++ 中获取字符串的特殊部分

c++ - 如何将整数转换为字符数组

c++ - 结构的通用比较运算符

c - 为什么全局变量会翻倍两次?