我正在使用C預處理器在枚舉中生成元素。有沒有辦法爲生成的元素編寫doxygen註釋?我不能在doxygen之前通過預處理器運行它,因爲這會剝離doxygen註釋。如何評論生成的代碼
例子:
#define ATTRIBUTES \
X(TITLE, "title") \
X(FILENAME, "filename") \
X(GENRE_ID, "genre_id")
enum ATTRIBUTES_ENUM {
#define X(a, b) a##_ATTRIBUTE,
ATTRIBUTES
#undef X
ATTRIBUTES_COUNT
};
並添加類似:
/**
* \def TITLE_ATTRIBUTE
* The media's title.
*/
不起作用。
編輯 感謝托馬斯馬修斯,這裏是我使用的解決方案:
#define ATTRIBUTES \
X(TITLE, "title") /*!< title attribute */ \
X(FILENAME, "filename") /*!< filename attribute */ \
X(GENRE_ID, "genre_id") /*!< genre id attribute */
#define X(a, b) a##_ATTRIBUTE,
enum ATTRIBUTES_ENUM {
ATTRIBUTES
ATTRIBUTES_COUNT
};
#undef X
並告訴Doxygen的擴展宏。唯一的缺點是最後一個元素的註釋也被用作ATTRIBUTES
定義的註釋。但對我而言這是一個小問題。
您可能會濫用##運算符來生成一個//標記 - 但您會處於未定義行爲的範圍內。問題在於,在擴展宏之前,註釋在翻譯階段3中被刪除。 –