簡體   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