2014-04-10 48 views
9

我有一個類可能的功能,我想隱藏一個特定的功能。例如如何隱藏doxygen中的特定函數(以C++編寫)?

class Test 
{ 

    /** 
    * About Function1 
    * 
    * @param[in] arg1 About arg1 
    * @param[in] arg2 About arg2 
    */   
    public void Function1(int arg1,char arg2); 

    // Presume same documentation for this function also 
    public void Function2(int,char); 

    // Presume same documentation for this function also 
    public void Function3(int,char); 

    // Presume same documentation for this function also 
    public void Function4(int,char); 
} 

假設我想隱藏的話說Function2我該怎麼做。

現在在當前場景中,它將顯示所有四個功能 及其文檔。

現在,我有以下的屬性在我.doxygen規則文件設定:

EXTRACT_ALL = YES

能否請你建議我用的東西,我可以隱藏說函數2?

在此先感謝。

回答

6

做這樣的事情:

#ifndef DOXYGEN_SHOULD_SKIP_THIS 

/* code that must be skipped by Doxygen */ 
/* in your case a method/function */ 

#endif /* DOXYGEN_SHOULD_SKIP_THIS */ 

而且在配置文件中,把PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS 確保ENABLE_PREPROCESSING設置爲YES

總之,你只是利用預處理器的概念爲你工作!

+0

我覺得寫我 – Rana

+0

和到底爲什麼你這樣認爲,這將網嗎? @Rana – CinCout

+0

非常感謝您的快速回復。在我的項目中,我有大約2000個奇怪的文件,儘管它看起來很好的解決方案,但做這種改變是完全不可能的。如果你可以建議一些東西,我會把文件中的東西,然後在配置文件中的一些設置,我將能夠跳過該功能。謝謝 – Rana

0

我想我曾經使用過EXTRACT_SYMBOLS來達到這樣的效果。

的EXCLUDE_SYMBOLS標籤可用於指定一個或多個符號名稱 應從 輸出中排除(命名空間,類,函數等)。符號名稱可以是完全限定的名稱,單詞,或者如果使用通配符*,則爲子字符串。例如:ANamespace,ACLASS, ACLASS :: ANamespace,ANamespace :: *測試

可惜我不能完全記得,也沒有找到config條目。

EXCLUDE_SYMBOLS = Test::Function2* 
+0

我試着添加下面的代碼,像EXCLUDE_SYMBOLS = Agent :: Label(int)const從輸出中跳過這個函數,但它不工作,其中Lebel是一個具有以下簽名的函數void Label(int)const – Rana

7

如果您在配置文件中有EXTRACT_PRIVATE = NO,那麼你可以將任何成員作爲私有Doxygen的,它不會爲成員生成文檔:

/// @private 
public void Function2(int, char); 

獎金的問題:如果你想使用相同的文檔全部四個成員,你可以這樣做使用這些方法之一:

/** 
* About Function1,2,3,4... 
*/ 
/// @{ 
public void Function1(int arg1, char arg2); 
public void Function2(int arg1, char arg2); 
public void Function3(int arg1, char arg2); 
public void Function4(int arg1, char arg2); 
/// @} 

/** 
* About Function1,2,3,4... 
*/ 
public void Function1(int arg1, char arg2); 
/// @copydoc Function1 
public void Function2(int arg1, char arg2); 
/// @copydoc Function1 
public void Function3(int arg1, char arg2); 
/// @copydoc Function1 
public void Function4(int arg1, char arg2); 

的一個使用@{ ... @}要求在配置文件中使用DISTRIBUTE_GROUP_DOC = YES

6

使用COND或內部

/*! \cond PRIVATE */ 
//only documented if cond is enabled 
// ... 
/*! \endcond */ 
相關問題