2009-11-04 42 views
8

我的頭文件中有#define值,我當然希望Doxygen能夠記錄文件,但我有其他人在C我認爲是靜態常量的文件,我不希望Doxygen記錄它們。一些簡單和愚蠢如何在C文件中記錄#defines以保持doxygen?

#define NUMBER_OF(a) (sizeof((a))/sizeof((a)[0])) 
#define MSTR(e) #e 

我怎樣才能保持Doxygen的距離把這些#define的IT創建的文檔中?我試着用@internal來標記它,但這似乎沒有幫助。

上的Doxygen和#define一個有點相關的問題,我怎樣才能得到:

#define SOME_CONSTANT 1234 /**< An explanation */ 

把「SOME_CONSTANT」和「解釋說:」而不是「1234」的輸出?

回答

2

您可以從Doxygen解析中排除代碼的任何部分,使用\cond...\endcond標籤。

編輯:一些相關的問題:

+1

我想這解決了.c文件問題中的#define問題(我可以用條件控件包圍這些行)。雖然這聽起來很嘈雜和不自然。並且根本不會隱藏#define'd常量的值。 (也許我不應該問一個複合問題,但我希望有一些#define特定的東西可以解決這兩個問題。) – 2009-11-04 16:49:41

+0

我不知道如何揭示定義常量而不透露其價值。 – mouviciel 2009-11-04 16:56:34

+0

我有cond/endcond工作,但我真的很想知道爲什麼內部沒有工作。我的doxygen fu肯定很弱。 :-( – 2009-11-04 18:02:45

0

這無疑將仍然顯得嘈雜和不自然,但解決您的其他問題,請嘗試:

/** An explanation */ 
#define SOME_CONSTANT /** @cond */ 1234 /** @endcond */ 
4

您可以在doxyfile中設置MAX_INITIALIZER_LINES = 0來隱藏定義的值。

9

沒有必要使用\cond\endcond命令。您可以通過簡單地使用\hideinitializer命令隱藏初始化:

#define SOME_CONSTANT 1234 /**< An explanation @hideinitializer */ 

關於第一個問題,你可以通過設置HIDE_UNDOC_MEMBERS = YES只有有Doxygen文檔塊宏將在輸出顯示。

1

您只想記錄.h文件中聲明的內容。我假設你在.c文件中聲明瞭所有靜態函數和變量static。所有其餘的都在.h也對應的文件中聲明。這些是你的「公衆」成員。

我喜歡在這種情況下做的,我相信Doxygen的是更多的設計使用這種方式是:

這隻會索引.h文件中包含的內容。您仍然可以添加包含您的.c文件INPUT目錄在你Doxyfile,他們將被掃描爲您的「公共」的成員的其他文檔...

0

我從.c文件移動我的文檔,解決了這個問題到.h文件。然後只在.h文件上運行doxygen。

然後,我想要記錄的項目('公共'項目)本質上是doxygen拾取的東西。

因爲我以前很小心把.h文件和'private'項目中的'public'項目放在.c文件中,所以這個工作非常好。

當我注意到doxygen正在拉動包含時,這種技術浮現在腦海中。讓我感到震驚的是,如果我還要移動調用模塊需要使用我的模塊的包含子集,那麼該列表也會被記錄下來。

該技術還有一個額外的好處:我可以在更新文檔時將文檔放在一個終端窗口中,並將源文件放在另一個終端窗口中。