関数宣言と構造体を生成する C ソース ファイルにマクロがあります。
それらを文書化するために doxygen を使用することにしましたが、ソース ファイルに宣言が明示的に含まれていない限り、doxygen は適切な文書を生成していません。
以下に少し例を示します。クラス宣言の一種のイディオムであるマクロがあります。
#define CLASS(x) \
typedef struct _##x x; \
typedef struct _##x *P##x; \
typedef struct _##x **PP##x; \
typedef struct _##x
したがって、書く代わりに:
/**
* \struct _Vector
* \brief the vector structure handles stuff to store data accessible by an index.
*/
typedef struct _Vector {
/*@{*/
Container container; /**< inherits from container */
size_t allocated_size; /**< the total allocated size of a vector (private usage) */
void* elements; /**< pointer to the allocated memory space (private usage) */
/*@}*/
} Vector, *PVector;
私は代わりに書くかもしれません:
/**
* \struct _Vector
* \brief the vector structure handles stuff to store data accessible by an index.
*/
CLASS(Vector) {
/*@{*/
Container container; /**< inherits from container */
size_t allocated_size; /**< the total allocated size of a vector (private usage) */
void* elements; /**< pointer to the allocated memory space (private usage) */
/*@}*/
};
しかし、2 番目のケースでは、doxygen は構造体メンバーに関するドキュメントを生成しません。
このような問題に準拠したソリューションを見つけるにはどうすればよいですか?