저는 C 전처리기를 사용하여 enum에 요소를 생성하고 있습니다. 생성 된 요소에 대해 doxygen 주석을 쓰는 방법이 있습니까? 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에서 주석이 삭제된다는 것입니다. –