繁体   English   中英

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

[英]Use Doxygen to document a function that is sent to a MACRO C++

最近,我们使用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而不是宏DEPRECATED?

您应该告诉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

使用@fn标记可明确告诉该块所指的是什么。 不像隐式连接那样方便,但是更安全。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM