[英]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將在執行預處理后將輸入文件轉儲到輸出中。
使用@fn標記可明確告訴該塊所指的是什么。 不像隱式連接那樣方便,但是更安全。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.