Я использую препроцессор C для генерации элементов в перечислении. Есть ли способ написать комментарии для сгенерированных элементов? Я не могу просто запустить его через препроцессор до 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.
*/
не работает.
EDIT
Благодаря Томасу Мэтьюсу, вот решение, которое я использовал:
#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
. Но это небольшая проблема в моем случае.