C++ 数组初始化的 Doxygen 问题

kel*_*ano 0 c++ doxygen initialization-list

我正在使用 Doxygen 为我当前的项目生成一个 API,并且发生了一些奇怪的行为。基本上,如果我使用初始化列表在类的构造函数中设置成员数组,Doxygen 不会产生正确的输出。

这是一个简单的测试类:

#ifndef TEST_HPP
#define TEST_HPP

class TestClass {
public:
    /** Constructor Version 1 */
    TestClass() : v{0,0,0} { }

    /** Constructor Version 2 */
    // TestClass() { 
    //     v[0] = 0;
    //     v[1] = 0;
    //     v[2] = 0;
    // }
protected:
    /** my little array */
    float[3] v;
};

#endif // TEST_HPP
Run Code Online (Sandbox Code Playgroud)

如果我使用构造函数的版本 1 在文件上运行 doxygen,我会得到一个相对空的类的 HTML 文件,没有构造函数文档,也没有提到我的变量 v。如果我注释掉版本 1 并使用版本 2,Doxygen 会正确生成类的文档。

我知道这种类型的数组设置对 C++11 来说是新的,但它是初始化还是它在初始化列表中完成的事实?如果有人知道导致这种行为的原因,我将不胜感激,因为我们在整个代码中使用这些类型的初始化程序,并且我希望在必要时避免进行彻底的更改。

Lig*_*ica 5

Doxygen v1.7.6.1 可追溯到 201112 月 10 日。它很旧。

在 v1.8.2 中从根本上增加了 C++11 支持;在v1.8.3 中修复了此支持中的一个错误,它似乎准确地涵盖了您的情况(#688647 “使用 C++11 样式统一类型修复了解析初始化列表的问题”)。

更改日志是您研究此类事情的朋友。

解决方案?升级以获取对 doxygen 的 C++ 解析能力的更新。
这些天我们使用的是 v1.8.5。