4
#define MY_MACRO(FOO) void FOO();
MY_MACRO(hi);
MY_MACRO(hey);
MY_MACRO(hello);
#undef MY_MACRO
我希望宏被doxygen的擴大,這我能夠通過配置正確的方式做:
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = YES
EXPAND_AS_DEFINED = MY_MACRO
這使我看到了擴大在doxygen輸出(函數hi
,hey
和hello
)中記錄宏的結果。到目前爲止,這一切都很好。但問題是,doxygen也將MY_MACRO
作爲一個定義。但是,我不希望API的客戶知道MY_MACRO
,因爲它是未定義的,並且不能被他們使用,並且不應該被他們看到。
我在我的doxygen配置中有EXTRACT_ALL = YES
,我不想改變它。我曾嘗試以下配置沒有成功:
PREDEFINED = DOXYGEN_SKIP_FOR_USERS
用下面的代碼:
#ifndef DOXYGEN_SKIP_FOR_USERS
#define MY_MACRO(FOO) void FOO();
#endif /*DOXYGEN_SKIP_FOR_USERS*/
MY_MACRO(hi);
MY_MACRO(hey);
MY_MACRO(hello);
#undef MY_MACRO
這隱藏的定義文件,當然避免擴大,所以我沒有得到的功能記錄在生成的API中。
我將不勝感激您的幫助。
有關雙下劃線的註釋:包含雙下劃線的名稱被保留供編譯器使用。爲了避免踩到彼此的腳趾,最好避免在自己的標識符中使用雙下劃線。 – 2010-09-17 08:38:40
@Bart你有引用得心應手嗎?我認爲這只是以雙下劃線開頭的標識符。 (並且全局標識符以下劃線開始,等等) – llasram 2010-09-17 10:10:22
@Bart和@llasram:我認爲這個雙下劃線規則是C++規則,而不是C(我沒注意到C++標誌)。但無論如何,爲了我們在這裏討論的目的,我們可以很容易地找出其他一些不太討厭的前綴。 – 2010-09-17 11:51:37