正确使用强氧剂 我一直试图用DoXEGY来记录我的C++项目,但没有什么成功:DoXEGEN无法识别某些宏,因此整个函数被误解,大部分时间不生成DOCS,即使它们有特殊的注释块。例如: /** * \def __MYLIB_FUNCTION_ATTRIBUTE(...) * \brief Some brief comment * \details Detailed doc * \sa Some valid references */ #define __MYLIB_FUNCTION_ATTRIBUTE(...) __attribute__(__VA_ARGS__) /** * \def IN * \brief Tag for input arguments to a function * \details Blah... * \sa OUT */ #define IN /** * \def OUT * \brief Tag for output arguments to a function * \details Blah... * \sa IN */ #define OUT class MyClass { public: /** * \fn MyClass() * \brief Constructor for MyClass * \details Hi! */ __MYLIB_FUNCTION_ATTRIBUTE(__always_inline__) MyClass() { } /** * \fn const char *doNothing(const char *s IN) * \brief A weird function * \details Some very weird doc * \param[in] s No good parameter */ const char* __SXC_FUNCTION_ATTRIBUTE(__const__) doNothing(const char *s IN) { return s; } };

正确使用强氧剂 我一直试图用DoXEGY来记录我的C++项目,但没有什么成功:DoXEGEN无法识别某些宏,因此整个函数被误解,大部分时间不生成DOCS,即使它们有特殊的注释块。例如: /** * \def __MYLIB_FUNCTION_ATTRIBUTE(...) * \brief Some brief comment * \details Detailed doc * \sa Some valid references */ #define __MYLIB_FUNCTION_ATTRIBUTE(...) __attribute__(__VA_ARGS__) /** * \def IN * \brief Tag for input arguments to a function * \details Blah... * \sa OUT */ #define IN /** * \def OUT * \brief Tag for output arguments to a function * \details Blah... * \sa IN */ #define OUT class MyClass { public: /** * \fn MyClass() * \brief Constructor for MyClass * \details Hi! */ __MYLIB_FUNCTION_ATTRIBUTE(__always_inline__) MyClass() { } /** * \fn const char *doNothing(const char *s IN) * \brief A weird function * \details Some very weird doc * \param[in] s No good parameter */ const char* __SXC_FUNCTION_ATTRIBUTE(__const__) doNothing(const char *s IN) { return s; } };,c++,doxygen,C++,Doxygen,为上述类生成的文档总是缺少对doNothing的描述,并且中的被解释为函数!我做错什么了吗?两件事: 1) Doxygen解析器在doNothing中看不到“IN”(因为它在预处理阶段被删除),因此\fn不应该包括它:const char*doNothing(const char*s)。顺便说一句,这\fn不是必需的:如果注释紧靠文档实体之前,Doxygen会自动关联注释 2) 我不知道uu SXC_FUNCTION_属性扩展成什么,但是,如果它类似于u MYLIB_FUNCTION_属性,它可

为上述类生成的文档总是缺少对
doNothing
的描述,并且
中的
被解释为函数!我做错什么了吗?

两件事:

1) Doxygen解析器在doNothing中看不到“IN”(因为它在预处理阶段被删除),因此\fn不应该包括它:
const char*doNothing(const char*s)
。顺便说一句,这\fn不是必需的:如果注释紧靠文档实体之前,Doxygen会自动关联注释

2) 我不知道uu SXC_FUNCTION_属性扩展成什么,但是,如果它类似于u MYLIB_FUNCTION_属性,它可能会混淆Doxygen。作为一种解决方法,您可以在Doxygen配置文件的预定义部分中将这些宏定义为nothing,也可以在源代码中有条件地定义它们,如下所示:

#ifdef DOXYGEN
// Doxygen does not grok the normal definition of this
#define  __MYLIB_FUNCTION_ATTRIBUTE(...)
#else
#define __MYLIB_FUNCTION_ATTRIBUTE(...)    __attribute__(__VA_ARGS__)
#endif

并将预定义的=DOXYGEN放在配置文件中。

配置文件中宏扩展等的值是多少?@Eric:我想你已经明白了这个问题!宏扩展设置为“是”,但是否还需要指定其他包含目录?目前,使用的所有标题也由Doxygen处理。我将查看其余参数并返回给您。以下是配置参数:
ENABLE\u PREPROCESSING=YES MACRO\u EXPANSION=YES EXPANSION\u ONLY\u PREDEF=NO SEARCH\u INCLUDES=YES
@Eric:Awesome!!你的解决办法轻而易举地奏效了!这绝对是+1。谢谢