Doxygen:强制记录未声明的功能
Doxygen: Force undeclared functions to be documented
我们的 C++ 程序有一个内置的脚本接口,可以在其中 运行 编写脚本。这些脚本可以访问 C++ 程序提供的便捷功能。
现在我们希望 Doxygen 创建脚本可以访问的函数的文档。这样的函数声明如下所示:
void ScriptEngine::load_script(const QString &path) {
//...
/*! \fn sleep_ms(const unsigned int timeout_ms)
\brief sleeps for timeout_ms milliseconds.
\param timeout_ms
*/
(*lua)["sleep_ms"] = [](const unsigned int timeout_ms) {
//sleep(timeout_ms)
};
//more convenience functions..
//...
}
显然 Doxygen 不会包含
sleep_ms(const unsigned int timeout_ms)
进入文档。有没有办法告诉 Doxygen 这样做?
这样做:
将以下行添加到您的 Doxyfile:
PREDEFINED = _DOXYGEN_
确保 Doxyfile 中的 ENABLE_PREPROCESSING
标签设置为 YES
.
将未声明函数的声明和文档放在 #ifdef _DOXYGEN_
部分。
#ifdef _DOXYGEN_
/*! \fn sleep_ms(const unsigned int timeout_ms)
\brief sleeps for timeout_ms milliseconds.
\param timeout_ms
*/
void sleep_ms(const unsigned int timeout_ms);
#endif
不要像您之前尝试的那样将上述代码放在方法或函数中,例如 ScriptEngine::load_script()
。并且不要将它放在命名空间或 class 中,除非实际上声明的函数是该命名空间或 class.
的成员
使用此方法,您的声明不会在正常构建期间产生链接器错误,但会被 Doxygen 看到。
另请参阅
我们的 C++ 程序有一个内置的脚本接口,可以在其中 运行 编写脚本。这些脚本可以访问 C++ 程序提供的便捷功能。
现在我们希望 Doxygen 创建脚本可以访问的函数的文档。这样的函数声明如下所示:
void ScriptEngine::load_script(const QString &path) {
//...
/*! \fn sleep_ms(const unsigned int timeout_ms)
\brief sleeps for timeout_ms milliseconds.
\param timeout_ms
*/
(*lua)["sleep_ms"] = [](const unsigned int timeout_ms) {
//sleep(timeout_ms)
};
//more convenience functions..
//...
}
显然 Doxygen 不会包含
sleep_ms(const unsigned int timeout_ms)
进入文档。有没有办法告诉 Doxygen 这样做?
这样做:
将以下行添加到您的 Doxyfile:
PREDEFINED = _DOXYGEN_
确保 Doxyfile 中的
ENABLE_PREPROCESSING
标签设置为YES
.将未声明函数的声明和文档放在
#ifdef _DOXYGEN_
部分。#ifdef _DOXYGEN_ /*! \fn sleep_ms(const unsigned int timeout_ms) \brief sleeps for timeout_ms milliseconds. \param timeout_ms */ void sleep_ms(const unsigned int timeout_ms); #endif
不要像您之前尝试的那样将上述代码放在方法或函数中,例如 ScriptEngine::load_script()
。并且不要将它放在命名空间或 class 中,除非实际上声明的函数是该命名空间或 class.
使用此方法,您的声明不会在正常构建期间产生链接器错误,但会被 Doxygen 看到。
另请参阅