2012-12-06 60 views
28

文檔化枚舉值給出:與doxygen的

namespace Foo { 
    class Foo { 
    public: 
     /// Foo enum, possible ways to foo 
     enum class Foo { 
      /// Foo it with an A 
      A, 
      /// Foo it with a B 
      B, 
      /// Foo it with a C 
      C 
     } 
    } 
} 

而且用的Doxyfile做出doxygen -g默認,我得到這個:

generated documentation

我怎樣才能得到證明枚舉值?我試着在會員之前/之後發表評論,使用///<等無濟於事。可能這只是doxygen中的一個錯誤?文檔中的示例工作。 (點擊枚舉的名稱不帶我到任何地方)

+0

我刪除了我的答案,因爲它不適用於C++ 11。 enum class {} – drescherjm

+0

謝謝您的時間:) –

+0

在這個問題中的任何一種風格或Doxygen 1.8.2的答案都適用。另一方面,他們中的其中一人不會在我的同事的機器上工作,也可以在Doxygen 1.8.2上工作,並且使用來自源代碼控制的新輸入。恐怖的事情正在發生。 –

回答

16

隨着Doxygen的1.8.2,既爲我以下工作:

使用///

/// This is an enum class 
enum class fooenum { 
    FOO, ///< this is foo 
    BAR, ///< this is bar 
}; 

使用/*! ... */

/*! This is an enum class */ 
enum class fooenum { 
    FOO, /*!< this is foo */ 
    BAR, /*!< this is bar */ 
}; 

Brief Description Detailed Description

doxygen changelogenum class在Doxygen的1.8.2的支持,所以我懷疑可能有一些小的語法問題你的命令。您能否將您的命令與上述兩個片段進行比較?

新功能

爲C++ 11新增支持:

strongly typed enums, e.g.: 
enum class E 
+0

與https://gist.github.com/c9b75f0a41525b2cbaf2我得到http://i.imgur.com/nvsD2.png。當它是班級成員時,結果相同。你得到了什麼?它有什麼不同? –

+1

當我將枚舉值賦給枚舉成員時,我遇到了此解決方案的問題。例如: 枚舉類位置:!性病::中int8_t { UNDEFINED = -1,/ * <具有值-1 */ 左上= 0,/ * <具有值0 */ TOPRIGHT = 1,/*!<具有值1 */ BOTTOMLEFT = 2,/ *!<具有值2 */ BOTTOMRIGHT = 3/*!<具有值3 */ }; 在doxygen輸出中,我重複了兩次字段。如何解決呢? – madduci

+0

@blackibiza我希望我可以幫你解決這個問題(儘管我不能保證我能解決問題),但很久以前我就是一個多氧的狂熱分子,並且從那以後就開始做更大更好的事情。如果我有一個工作doxygen設置,我會看看。在此之前,最好的辦法是提出一個新問題來獲得更多的知名度,並且希望讓其他人看看它。還請注意,doxygen的創建者和首席開發人員是[活動成員](http://stackoverflow.com/users/784672/doxygen)。 –

4

波紋管風格的作品對我來說:

enum class Foo { 
    /**Foo it with A*/ 
    A, 
    /**Foo it with B*/ 
    B 
} 
5

注意,我個人不喜歡有頭文件長(因爲記錄意味着至少寫2或3行文檔,一個單詞,所以我通常沒有足夠的簡短),所以我更喜歡在.cpp文件中記錄。

要做到這一點,您可以使用Doxygen的\ var功能。

所以頭說到裸:

namespace Foo { 
    class Foo { 
    public: 
     enum class Foo { 
      A, 
      B, 
      C 
     }; 
    }; 
} 

和.cpp文件有:

namespace Foo { 

/** \enum Foo::Foo 
* \brief Foo enum, possible ways to foo 
* 
* All the necessary details about this enumeration. 
*/ 

/** \var Foo::A 
* \brief Foo it with an A 
* 
* When you use A... etc. 
*/ 

/** \var Foo::B 
* \brief Foo it with an B 
* 
* When you use B... etc. 
*/ 

/** \var Foo::C 
* \brief Foo it with an C 
* 
* When you use C... etc. 
*/ 

} 

這樣的話,我真的可以記錄在長度經常發生在我身上。

+1

謝謝。我也喜歡這種風格。將文檔放在標題中維護源*而非*的位置。 –

+0

但是,如果您要爲您編寫的庫分發頭文件,則您的樣式意味着頭文件不含註釋。 – hmijail

+0

@hmijail是的,你可以在某個(免費)網站的某個地方擁有你的Doxygen HTML文件...所以你可以在你的頭文件中包含一個鏈接:「文檔可以在那裏找到」。 –