2012-02-15 62 views
1

我想用doxygen記錄我的C代碼。我使用#define將一些默認值設置爲宏。 (我知道C沒有默認值,但是這只是一個例子)展開doxygen文檔中的非函數宏C

例如爲:

#define DEFAULT_WIDTH 100 
#define DEFAULT_HEIGHT 200 

裏面的doxygen我也補充說,在處理我想要的方式默認值的別名。考慮下面的示例功能

//! Initializes something 
//! @param width The width @default DEFAULT_WIDTH 
//! @param height The height @default DEFAULT_HEIGHT 
//! @return Result of initialization 
char initSomething(int width,int height); 

這將生成文檔,因爲我想要的除了一個重要的事實。 DEFAULT_WIDTH和DEFAULT_HEIGHT不會擴展,我得到宏名稱,而不是100和200。我確實已經檢查了MACRO_EXPANSION和ENABLE_PREPROCESSING。

我錯過了什麼?實際上有沒有辦法使用doxygen來實現這個目標?

我正在用doxywizard配置doxygen,目前我正在Windows下進行測試。

編輯:正如ugoren指出,它可能只是文件的宏,然後doxygen將鏈接到他們的文檔。這就是我目前的實現在我的項目中的實際情況。但我正在考慮其他選擇 - 如果有的話。

回答

2

我不認爲有比MACRO_EXPANSION和ENABLE_PREPROCESSING更強的東西。
問題可能是評論中的宏通常不會擴展。有一個很好的理由 - 想象在文檔中擴展的宏max

您可以記錄宏,以便文檔的讀者能夠輕鬆地找到真正的值。

+0

是剛剛記錄的宏是一個可能的解決方案,這是我目前在做什麼,但我想知道是否有其他方法可以做到這一點。感謝您輸入 – Lefteris 2012-02-15 19:32:40

+0

確保宏可以在doxygen文檔中進行擴展 – 2012-02-15 21:52:08

2

EXPAND_AS_DEFINED += DEFAULT_WIDTH 

添加東西到你的doxygen的配置文件。

(P99的文件上充滿了這類宏展開的,其doxygen的配置文件應該有分佈。)

+0

您好Jens,感謝您的輸入。在提出問題之前,我嘗試過EXPAND_AS_DEFINED,但沒有奏效。如果你說盡管它對P99有效,那麼我一定是有過錯,或者它可能是doxywizard的一些特性。我已經檢查過P99,因爲我甚至在你的博客中評論過它,我會去比較由doxywizard生成的配置文件和你的配置文件。 – Lefteris 2012-02-16 05:10:06

+0

它恐怕還行不通。但是我注意到你的配置文件中有一點與我的不同。爲什麼在主conf文件中只有一個EXPAND_AS_DEFINED + = FOOTNOTE,而其他所有文件似乎都位於主doxygen conf文件包含的不同文件中?我只是在conf文件中添加了一堆EXPAND_AS_DEFINED + = MACRO,沒有任何反應。那有什麼區別嗎?所有其他關於預處理器的標誌都設置爲與P99 – Lefteris 2012-02-16 05:54:11

+0

相同不,我不認爲將它們包含在包含文件中應該有所作爲。在P99中,這只是爲了更好地模塊化。包含的文件基本上有一個大的'EXPAND_AS_DEFINED'列表,這個文件也可以包含在其他項目中。必須有一些可疑的事情發生,在配置文件中稍後覆蓋doxygen變量,doxygen救救你的代碼在某處... – 2012-02-16 07:59:45